SQL Server 2000 环境数据库中有两个表,A表和B表。A表中aID是主键,不同的aID表示不同的实体。
B表中bID、Rtime是主键,bID是外键,引用的是aID。其中Rtime是datetime类型的日期。
也就是说A表是某实体的固定属性,而B表是某实体的不同时间的属性。
现在要查询B表,要求显示每个不同的A实体的最新时间下的状态。
请问各位,这个SQL语句应该如何写?
急用,不胜感激!
B表中bID、Rtime是主键,bID是外键,引用的是aID。其中Rtime是datetime类型的日期。
也就是说A表是某实体的固定属性,而B表是某实体的不同时间的属性。
现在要查询B表,要求显示每个不同的A实体的最新时间下的状态。
请问各位,这个SQL语句应该如何写?
急用,不胜感激!
*
FROM A
JOIN B ON A.aID=B.bID
WHERE NOT EXISTS(SELECT * FROM B AS C WHERE B.bID=C.bID AND C.RTime>B.RTime)
from
(select a.aid,b.Rtime from A join B on a.aid=b.bid ) t
where not exists(select 1 from B where bid=t.aid and rtime>t.rtime)
from a, b
where a.aid = b.bid
group by a.aid--如果B表不止这两个字段
select a.*, m.* from a ,
(select t.* from b t where Rtime = (select max(Rtime) from b where bid = t.bid)) m
where a.aid = b.bid
*
FROM A
JOIN B ON A.aID=B.bID
WHERE NOT EXISTS(SELECT * FROM B AS C WHERE B.bID=C.bID AND C.RTime>B.RTime)