我有这张桌子:
update_id | project_id | content | date
------------------------------------------------------
1 | 1 | text... | 2011-12-20 22:10:30
2 | 2 | text... | 2011-12-20 22:10:30
3 | 2 | text... | 2011-12-21 22:10:30
4 | 2 | text... | 2011-12-22 22:10:30
5 | 2 | text... | 2011-12-23 22:10:30
Run Code Online (Sandbox Code Playgroud)
要获取我使用的特定项目的最新两个更新:
SELECT update_id, title, content, date
FROM updates
WHERE project_id = 2
ORDER BY date DESC
LIMIT 2
Run Code Online (Sandbox Code Playgroud)
现在,我想动态地向结果中添加一个'update_time'列,其值为"LATEST"或"PREVIOUS",具体取决于它是最新更新还是之前的更新,如下所示:
update_time | update_id | content | date
------------------------------------------------------
LATEST | 5 | text... | 2011-12-23 22:10:30
PREVIOUS | 4 | text... | 2011-12-22 22:10:30
Run Code Online (Sandbox Code Playgroud)
只有当你想知道为什么我需要这个时:MySQL:按ID排序,按日期排序前一行和下一行
这是一些聪明的SQL.它为第一行选择'LATEST',为所有其他选择'PREVIOUS'(我们应该有多个).
SELECT IF(@rownum = 0, 'LATEST', 'PREVIOUS') update_time, update_id,
title, content, date, (@rownum := @rownum + 1) r
FROM updates, (SELECT @rownum := 0) dummy
WHERE project_id = 2
ORDER BY date DESC
LIMIT 2
Run Code Online (Sandbox Code Playgroud)
它还为结果集添加了另一列.希望这不是问题.