gpt4 book ai didi

mysql - 合并两个 select 语句而不排序

转载 作者:行者123 更新时间:2023-11-29 07:25:26 26 4
gpt4 key购买 nike

有一个表TableX(id, user_id, sticky_date, created_at)

其中很少有条目具有固定日期。

我想得到的结果是,

结果将包含所有具有 sticky_date order desc 的条目,然后所有剩余的条目按 created_at 排序。

我尝试了以下查询,

(SELECT * FROM TableX ORDER BY sticky_expiry_date)
UNION
( select * from TableX order by created_at desc)

但是在 union created_at 之后并没有按预期工作。有没有办法在单个查询中完成这些工作。

最佳答案

我们可以使用计算列来做到这一点:

SELECT *
FROM
(
SELECT *, 0 AS position, UNIX_TIMESTAMP(sticky_expiry_date) AS odr
FROM TableX
UNION -- UNION ALL ?
SELECT *, 1, -UNIX_TIMESTAMP(created_at)
FROM TableX
) t
ORDER BY
position, odr;

这里的想法是 position 别名跟踪并集的哪一半应该先出现。然后,odr 别名跟踪联合的每一半内的顺序。上半部分使用 sticky_expiry_date 作为 odr 别名,而下半部分使用 created_at。为了处理升序/降序日期排序问题,我们可以将日期列包装在 UNIX_TIMESTAMP 中,并按该数量(升序)或该数量取反(降序)进行排序。

关于mysql - 合并两个 select 语句而不排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54086711/

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