当前位置: 首页 > 面试题库 >

没有DESC的MySQL反向顺序

姚胡媚
2023-03-14
问题内容

表LIMIT 8、3中的SELECT ID

结果为8,9,10

但我需要10,9,8

你该怎么做?如果您添加“ ORDER BY ID DESC”,则得到3,2,1


问题答案:

将查询放入子选择中,然后在外部选择中颠倒顺序:

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指出这一点!



 类似资料:
  • 问题内容: 我想在使用desc后反转sql server中结果的顺序。例如: 返回结果: 但是然后我想翻转结果,使其看起来像这样: 我试过了 但这没用,有什么建议吗? 问题答案: 只要您为子查询加上别名,它就应该起作用。

  • 问题内容: 一般问题:反向流的正确方法是什么?假设我们不知道流包含什么类型的元素,反转任何流的通用方法是什么? 具体问题: IntStream提供了range方法来生成特定范围内的,现在我想将其从0切换为负数将无法正常工作,也无法使用 与IntStream我会得到这个编译器错误 错误:(191,0)ajc:sorted()类型中的方法IntStream不适用于参数(Integer::compare

  • 问题内容: 在MySQL中,当我尝试在表中插入反斜杠时,它不接受它,并为我提供了没有反斜杠的内容。 设置为自动递增: 码: 如何插入文字反斜杠? 有关转义序列的注意事项: 问题答案: 您需要转义反斜杠: 参考(包含必须为mysql转义的所有字符的列表)

  • 问题内容: 我有下表称为问题: 我只想选择每个询问者一次,如果有多个同名提问者,请选择ID最高的一个。因此,预期结果: 我使用以下查询: 我得到以下结果: 因此,它将选择遇到的第一个“鲍勃”,而不是最后一个。 谢谢 问题答案: 如果要为每一个添加最后一个,则应使用聚合函数: 之所以得到不寻常的结果,是因为MySQL使用了一个扩展名,该扩展名允许未选择列表中的项进行汇总,并且不包含在GROUP BY

  • 我有以下称为问题的表: 我想选择每个asker只一次,如果有多个asker具有相同的名称,选择最高的ID之一。所以,预期的结果: 我使用以下查询: 我得到以下结果: 它选择遇到的第一个‘鲍勃',而不是最后一个。

  • 我尝试将以下PostgreSQL查询表述为Jooq: 因此,我想用一个使用窗口函数的嵌套查询编写一个查询,并首先从内部查询开始。我走了那么远: 在orderBy命令之后,我在Jooq中不再使用DESC选项。只有像或这样的命令,还有像这样的继承命令,它返回一个SortField-object,我不能再调用所需的后续命令。