一个苦思不解的SQL查询,请高手解答下
有A表和B表
A表有AID ANAME
B表有ID BID DATETIME
AID是A表主键
ID是B表的 主键
AID和BID存在关联
我想实现将B表按最近时间的一条记录匹配A表中的记录,A表中所有记录都会被查出,我之前用 下面语句只能查出A和B都有对应的记录
SELECT * FROM A,B WHERE B.DATETIME=(SELECT MAX(DATETIME) WHERE A.AID=B.BID) AND A.AID=B.BID
SELECT * FROM A left join (select * from B t where not exists(select 1 from B where BID=t.BID and [DATETIME]>t.DATETIME)) n on A.AID=n.BID
[解决办法]
select m.* , n.*from a m left join b non m.AID = n.BID and n.DATETIME = (select max(DATETIME) from b where bid = n.bid)select m.* , n.*from a m left join b non m.AID = n.BID and not exists (select 1 from b where bid = n.bid and DATETIME > n.DATETIME)
[解决办法]
select *
from a
left join b
on a.AID = b.BID
and b.DATETIME=(SELECT distinct MAX(DATETIME) WHERE a.AID=b.BID)