求一条关联SQL的写法?

1561023126_385054.png

1561023192_170342.png

以上两张表分别A,B

想找出A表中所有authorid为8的记录,并在每条记录结果栏中关联显示出B表内的数据

select a.id,a.sourcename,a.authorid, b.id AS b__id,b.uid AS b__uid,b.cid AS b__cid from ts_wffiles a LEFT JOIN ts_checkin b on a.id=b.cid where a.authorid=8 GROUP BY id order by id desc

得出的结果是:
1561023541_258560.png
我想要得到的结果是红色框中的记录应该为上个图中红色框内的记录,也就是取出B表中ID为10的记录,这里取出的是ID为9
但是如果我在WHERE后面连接一个and b.uid=8,却又把left join取出来的A表记录过滤了下,我想保持A表中的所有记录的同时把B表中符合uid=8的记录取出来。

求SQL写法

阅读 1.4k
1 个回答

https://stackoverflow.com/a/3...

select a.id,a.sourcename,a.authorid, b.id AS b__id,b.uid AS b__uid,b.cid AS b__cid 
from ts_wffiles a LEFT JOIN ts_checkin b 
on a.id=b.cid 
where a.authorid=8 
   and not exist (
      select 1 from ts_checkin as b2
      where b2.cid = b.cid and b2.id > b.id
   )
GROUP BY id 
order by id desc

假设你想找的是 id 最大的。

照 stackoverflow 写的,自己还没用过 ...

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