左连接的表中有多条数据如何只取按时间排序最大的一条

xuhaibobishen 2010-11-01 01:55:17
表a,有字段id,表b有字段cid,adddate,bname,id,a表中的id对应b表中的cid,a表左连接b表,现在a中一条数据对应b中多条数据,如何只取b表中adddate最大的一条
...全文
2196 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhaibobishen 2010-11-01
  • 打赏
  • 举报
回复 1
[Quote=引用 6 楼 zsforever 的回复:]
select *
from a aa left join
b bb on aa.id=bb.cid and bb.adddate=(select max(adddate) from b where cid=bb.cid)
[/Quote]
此为正解,谢谢
zhu6100441 2010-11-01
  • 打赏
  • 举报
回复
select * from A left join B weher A.id=B.cid and B.adddate=(select adddate from B ordey by adddate)
这样不知道可以不。
iamltd 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuhaibobishen 的回复:]
引用 3 楼 iamltd 的回复:
用row_number函数


SQL code

select * from
select *,row_number() over(partition by id order by adddate) as rw
from a left join b on id=cid
)a where rw = 1


你这个和上面的回答没有区别
[/Quote]

怎么会没有区别?这个出来A表每个记录都在,B表只取最大的一行
满足你的需求了撒
zsforever 2010-11-01
  • 打赏
  • 举报
回复
select *
from a aa left join
b bb on aa.id=bb.cid and bb.adddate=(select max(adddate) from b where cid=bb.cid)
王向飞 2010-11-01
  • 打赏
  • 举报
回复
给点测试数据和你需要的结果。
xuhaibobishen 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iamltd 的回复:]
用row_number函数


SQL code

select * from
select *,row_number() over(partition by id order by adddate) as rw
from a left join b on id=cid
)a where rw = 1
[/Quote]

你这个和上面的回答没有区别
iamltd 2010-11-01
  • 打赏
  • 举报
回复
用row_number函数


select * from
select *,row_number() over(partition by id order by adddate) as rw
from a left join b on id=cid
)a where rw = 1

xuhaibobishen 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hanchunyang123 的回复:]
SQL code

select top 1 * from a left join b on id=cid order by adddate
[/Quote]

都说了a表左连接b表,如果a表只取top 1还左连接干嘛,一点难度都没了
hanchunyang123 2010-11-01
  • 打赏
  • 举报
回复

select top 1 * from a left join b on id=cid order by adddate


27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧