我有这张表:
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
要获取特定项目的最新两个更新,我使用:
SELECT update_id, title, content, date
FROM updates
WHERE project_id = 2
ORDER BY date DESC
LIMIT 2
现在,我想在结果中动态添加一个“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
仅当您想知道我为什么需要这个时:MySQL:按 id 选择行,并按日期选择上一行和下一行 https://stackoverflow.com/questions/8673571/mysql-select-row-by-id-with-previous-and-next-rows-by-date
这里有一些聪明的 SQL。它为第一行选择“最新”,为所有其他行选择“上一个”(如果我们有多个行)。
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
它还向结果集中添加另一列。希望这不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)