SELECT id FROM table LIMIT 8,3
结果为8,9,10
但我需要10,9,8
你怎么能这样做?如果添加“ORDER BY id DESC”,它将获得3,2,1
答案 0 :(得分:6)
将查询放入子选择中,然后在外部选择中反转顺序:
SELECT id from (
SELECT id FROM table ORDER BY id LIMIT 8, 3
) AS T1 ORDER BY id DESC
测试数据:
CREATE TABLE table1 (id INT NOT NULL);
INSERT INTO table1 (id) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11);
SELECT id from (
SELECT id FROM table1 ORDER BY id LIMIT 8, 3
) AS T1 ORDER BY id DESC
结果:
10
9
8
请注意,子查询中的ORDER BY是必需的,否则订单是未定义的。感谢Lasse指出这一点!
答案 1 :(得分:3)
首先,如果您根本没有订购,那么您现在获得的8,9,10可能与所使用的索引有关。你确定将来不会改变吗?
我所得到的是,除非您指定订单,否则您不应该依赖它是您想要的订单。
所以我肯定会在该选项中添加一个订单以指定您想要的内容。否则你只是说“从这张桌子给我3个数字”,而不是“根据这些规则从这张桌子给我3个数字”。为什么3,2,1错了,但8,9,10对吗?你没有指定。
无论如何,要回答你的问题,你必须在限制之后订购,这意味着一个子选择:
SELECT id FROM (
SELECT id FROM table LIMIT 8, 3
) AS dummy ORDER BY id DESC
但是,我会尝试使用此SQL,与有关指定的部分相关:
SELECT id FROM (
SELECT id FROM table ORDER BY id LIMIT 8, 3
) AS dummy ORDER BY id DESC