我有这样的表结构
'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
我想找到每个遭遇的第二个最新条目?
任何人请帮忙
答案 0 :(得分:1)
您可以使用变量来选择每组前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
组的第二条最新记录。