题目
MyNumbers
表:
单一数字 是在 MyNumbers 表中只出现一次的数字。
请你编写一个 SQL 查询来报告最大的 单一数字 。如果不存在 单一数字 ,查询需报告 null 。
查询结果如下例所示。
示例 1:
示例 2:
解题思路
1.题目要求我们查找MyNumbers 表中只出现一次的最大的数字,题目相对来说比较简单,但是存在一个小坑!
2.首先我们对 num 进行分组并输出每一组的元素个数,筛选出元素个数等于一的num,这个筛选出的num就是我们的唯一数字,再对它进行降序排序后返回第一页的第一个元素,我们就可以得到只出现一次的最大的数字
3.到这里还没有结束!因为我们有可能查不到这个数字,也就是说表中不存在单一数字,但是我们又进行了条件限制(limit 1),那么行被删去就什么都不会返回,此时运行就会出错。这时我们只需要直接在内层select上套一层select,就可以自动在找不到的时候返回null。
代码实现
select
(select num from MyNumbers
group by num having count(num)=1 order by num desc limit 1) as num
运行结果