gpt4 book ai didi

mysql - 如何在排序的顶部获得 NULL?

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:48 27 4
gpt4 key购买 nike

定义了两个表:

CREATE TABLE `users` (
`user_id` mediumint(6) unsigned NOT NULL AUTO_INCREMENT,
`score` tinyint(1) unsigned DEFAULT NULL,
PRIMARY KEY (`user_id`)
);

CREATE TABLE `online` (
`user_id` mediumint(6) unsigned NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`)
);

如何合并表,让结果按score字段从大到小排序,但最上面有值为NULL的记录?此查询不对第二个样本进行排序:

(SELECT * FROM `online` JOIN `users` USING(`user_id`) WHERE `score` IS NULL)
UNION
(SELECT * FROM `online` JOIN `users` USING(`user_id`) WHERE `score` IS NOT NULL ORDER BY `score` DESC)

最佳答案

在排序中使用两个键:

SELECT *
FROM `online` o JOIN
`users`
USING (user_id)
ORDER BY (`score` IS NULL) DESC, Score DESC;

MySQL 将 bool 值视为数字上下文中的数字,“1”表示真,“0”表示假。因此,DESC 将真实值放在第一位。

顺便说一句,如果您使用 UNION ALL 而不是 UNION,您的版本看起来会有效。但是,不能保证结果按任何特定顺序除非您明确地具有ORDER BY

UNION 会产生删除重复项的开销,并在这样做时重新排列数据。

关于mysql - 如何在排序的顶部获得 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56702635/

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