我有这样的桌子结构
'encounterID' , 'dateAndTime'
1234 2016-02-12 17:57:57
1234 2016-02-12 17:58:59
1234 2016-02-12 17:59:05
12345 2016-02-12 17:57:57
12345 2016-02-12 17:58:59
12345 2016-02-12 17:59:05
我想为每个遇到的人找到第二个最新的条目?
任何人请帮忙
最佳答案
您可以使用变量选择每个组的前n个记录:
SELECT encounterID, dateAndTime
FROM (
SELECT encounterID, dateAndTime,
@rn := IF(@eID = encounterID, @rn + 1,
IF(@eID := encounterID, 1, 1)) AS rn
FROM mytable
CROSS JOIN (SELECT @rn := 0, @eID := 0) AS vars
ORDER BY encounterID, dateAndTime DESC) AS t
WHERE t.rn = 2
外部查询选择每个
encounterID
组的第二个最新记录。Demo here