为了账号安全,请及时绑定邮箱和手机立即绑定

两张表一对多的连接,取多记录表中最新的一条数据

两张表一对多的连接,取多记录表中最新的一条数据

陪伴而非守候 2018-12-06 15:47:36
A表为主表(问题表),B表示关联表(答案表),A表中一个问题对应B表中多个回答,如A Ba1,... b1,a1,Time b2,a1,Timeselect * from A left join B on A.a1=B.a1查出来肯定是两个记录,怎么编写sql查询A,关联上B表中最新的一条记录.
查看完整描述

8 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

left join

查看完整回答
反对 回复 2019-01-07
?
守着一只汪

TA贡献1872条经验 获得超3个赞

select * from A inner join (select table1.* from b table1 inner jioin b table2 on table1.a1 = table2.a1 and table1.Time>table2.Time) tableB inner join on A.a1=tableB.a1

查看完整回答
反对 回复 2019-01-07
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

select * from A as a left join (select * from B where B.Time in (select MAX(B.Time) as Time from B group by B.a1)) as b on a.a1=b.a1

查看完整回答
反对 回复 2019-01-07
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

先连接按照时间进行排序,每次都选择第一条(top(1))!

查看完整回答
反对 回复 2019-01-07
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

分组在连接查询。

查看完整回答
反对 回复 2019-01-07
?
HUWWW

TA贡献1874条经验 获得超12个赞

SELECT  A.*, B2.* FROM  A
CROSS APPLY
        (
        SELECT  TOP 1 B.*
        FROM    B
        WHERE   B.a1 = A.a1
Order by B.Time Desc ) B2
查看完整回答
反对 回复 2019-01-07
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

可以使用with as

WITH temp AS
(
SELECT MAX(UpdateTIME) AS updatetime,a1 FROM  dbo.tableb  GROUP BY Question
)
SELECT * FROM dbo.tablea
INNER JOIN temp ON dbo.tablea.a1 = temp.a1

查看完整回答
反对 回复 2019-01-07
  • 8 回答
  • 0 关注
  • 551 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信