Table a
ID Name
1 aa
2 bb
3 cc
Table b
ID Name DateTime aID
1 a1 2010-10-10 1
2 b1 2010-11-10 1
3 c1 2011-01-01 1
4 d1 2010-09-09 2
4 e1 2010-09-09 2
SELECT a.Name, b.Name
FROM Table a
LEFT JOIN Table b ON (a.ID = b.aID, b.status = 1)由于以上查询的结果,我只需要表b中最大值(日期时间)的记录:-
aa,c1
注意:在我真正的查询中,我有许多联接和位置条件。组员在这里是行不通的。
发布于 2011-12-01 19:45:18
WHERE b.DateTime = (SELECT MAX(DateTime) FROM b)发布于 2011-12-01 20:01:51
这是一种使用排序函数来识别“最大”日期的方法,然后过滤掉查询。警告:在某些情况下,它的表现可能不是很好。
SELECT a.Name, b.Name
FROM Table a
LEFT JOIN (
select aID, DateTime, rank() over (order by b.DateTime desc) as rownum
from TableB
) b ON a.ID = b.aID and b.status = 1
where
b.rownum = 1 -- first rowhttps://stackoverflow.com/questions/8347302
复制相似问题