本文主要是介绍【SQL】619. 只出现一次的最大数字 (知识点学习:mysql order by 多个字段排序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前述
推荐阅读:
mysql order by 多个字段排序
MySql Order By 多个字段 排序规则
引用mysql order by 多个字段排序文章中的总结:
(1)在MySql中,使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。
(2)尤其非常特别重要:默认按升序(ASC)排列。
(3)order by 后可加2个(或多个)字段,字段之间用英文逗号隔开。
(4)若A用升序,B用降序,SQL该这样写:order by A ASC, B DESC; 默认同理,也可以这样写:order by A, B DESC;
(5)若A、B都用降序,必须用两个DESC,order by A DESC, B DESC;
(6)多个字段时,优先级按先后顺序而定。
题目描述
leetcode题目:619. 只出现一次的最大数字
思路
- 确定单一数字有哪些
- 选出最大的单一数字
写法一
-- 1. 确定单一数字有哪些 ==> 分组(group by)统计count() = 1
-- 2. 选出最大的单一数字 ==> max()
select max(B.num) as num
from (select num -- 将统计出来的单一数字组成一个临时表,命名为表Bfrom MyNumbers group by num having count(num) = 1) B
写法二
select if(count(num)=1, num, NULL) as num
from MyNumbers
group by num
order by num DESC
limit 1
写法三
select if(count(num)=1, num, NULL) as num
from MyNumbers
group by num
order by count(num), num DESC
limit 1
验证order by 多个字段的排序规则:
select count(num), if(count(num)=1, num, NULL) as num
from MyNumbers
group by num
order by count(num), num DESC # count(num)是升序(MYSQL默认升序);num是降序。
-- 上述写法是:每个字段单独排序,not 两个字段一块排序。
-- if 想要两个字段一块排序: select * from t order by concat(A,B) desc
--解析:order by concat(A, B) desc的效果等同于 order by A desc, B desc; 且,是按照优先级按先后顺序(order by中写的字段先后顺序)而定的。
结果如下:
这篇关于【SQL】619. 只出现一次的最大数字 (知识点学习:mysql order by 多个字段排序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!