先分组连表还是先连表分组

两个表A,B。
A:

bid  created_at 
1    2017-06-18 10:00:00 
1    2017-06-18 11:00:20
2    2017-06-18 10:00:30 
2    2017-06-18 11:00:30

B:

id name
1  HH
2  YY

现在要查询出结果:

bid  created_at            name
1    2017-06-18 11:00:20   HH
2    2017-06-18 11:00:30   YY 

问题:
是先排序分组A获取最新的数据再去join B表,还是先join B表排序再去分组?
如果数据很多的话又怎么选择?
或者有其它更好的办法

阅读 4.7k
2 个回答
select * from B
join A on B.id=A.bid and not exists(select 1 from A as a2 where a2.bid=A.bid and a2.created_at>A.created_at)

join A的时候加个额外条件,不存在一条比当前的A时间更大的,那么当前这条的时间就是最大的那一条。

为何不在b表增加一个max_created_at字段

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题