【发布时间】:2010-11-30 14:24:10
【问题描述】:
如何从 mysql 中选择最新的 5 行(例如,按 id 最新)然后按 asc 或 desc 排序??
问题是我有 1,2,3,4,5,6,7,我想选择最新的 2,例如 (6,7) 然后按 asc 或 desc 排序(6,7 或 7,6 ) ,但是如果我使用 orderby 那么它的限制是 (1,2) 或 (7,6) ,有没有办法从一个 sql 语句中做到这一点?
谢谢
【问题讨论】:
标签: mysql
如何从 mysql 中选择最新的 5 行(例如,按 id 最新)然后按 asc 或 desc 排序??
问题是我有 1,2,3,4,5,6,7,我想选择最新的 2,例如 (6,7) 然后按 asc 或 desc 排序(6,7 或 7,6 ) ,但是如果我使用 orderby 那么它的限制是 (1,2) 或 (7,6) ,有没有办法从一个 sql 语句中做到这一点?
谢谢
【问题讨论】:
标签: mysql
你可以使用类似的东西
SELECT * FROM TABLE WHERE ID IN (SELECT ID FROM TABLE WHERE X ORDER BY ID LIMIT 2) ORDER BY ID DESC
【讨论】:
如果你想要最新的 5 或 2,我没有得到,我在这里使用 2。但这是我刚刚写的没有测试的东西。
SELECT * FROM table WHERE id IN (SELECT id FROM table ORDER BY id DESC LIMIT 2) ORDER BY id ASC/DESC;
希望这会有所帮助! :)
【讨论】:
好的,我找到了解决方案,谢谢大家的努力和回答,
我做了 2 列,ID 和 TSTAMP(用于时间戳),就像按 id asc 排序,tstamp asc/desc ... limit x 一样,所以它总是按 id 排序,然后按 tstamp 排序并限制正确的事情。
嵌套查询对引擎来说很痛苦......
谢谢
【讨论】:
Select * from TABLE order by id asc , time_stamp desc
【讨论】:
为什么你不能做一些事情,比如
SELECT *
FROM TABLE
WHERE (TABLE.primary_key IN (
SELECT TABLE.primary_key
FROM TABLE
ORDER BY TABLE.id ASC
LIMIT 2
))
ORDER BY TABLE.id DESC
【讨论】: