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中max(datetime)的那些记录。 结果: -
aa,c1
注意:在我的真实查询中,我有很多连接和条件。分组将无法在这里工作。
答案 0 :(得分:2)
WHERE b.DateTime = (SELECT MAX(DateTime) FROM b)
答案 1 :(得分:0)
这是一种使用排名功能识别"最大"日期,然后筛选查询。注意:在某些情况下可能效果不佳。
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 row