如何使用SQL获取最新记录?

时间:2011-12-01 19:42:27

标签: tsql

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

注意:在我的真实查询中,我有很多连接和条件。分组将无法在这里工作。

2 个答案:

答案 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