gpt4 book ai didi

mysql - 同时 UNION ALL 和 ORDER BY

转载 作者:行者123 更新时间:2023-11-29 08:15:35 24 4
gpt4 key购买 nike

我的查询不起作用,我不明白为什么。
每个 SELECT 语句都应返回降序结果,但它们是按升序排列的。为什么?

(SELECT * FROM table WHERE deleted_at = 0 ORDER BY id DESC)  
UNION ALL
(SELECT * FROM table WHERE deleted_at <> 0 ORDER BY id DESC)
LIMIT 0,30

我不得不说,这个查询不会产生任何错误,结果也是我所期望的。它们只是没有很好地排序。

最佳答案

使用子查询时不保证顺序。如果您希望结果按 id 降序排序,请使用:

(SELECT * FROM table WHERE deleted_at = 0)  
UNION ALL
(SELECT * FROM table WHERE deleted_at <> 0)
order by id desc
LIMIT 0,30;

但是,我认为您真正想要的查询是:

select *
from table
order by deleted_at = 0 desc, id desc
limit 0, 30;

这会将 deleted_at = 0 行放在前面,然后用其余数据填充该数据。

注意:如果 deleted_at 可以为 NULL,并且您也想将其过滤掉,那么请添加一个 where 子句来进行此过滤。

关于mysql - 同时 UNION ALL 和 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com