LeetCode 619:最大唯一数MySQL查询问题求助
解决LeetCode 619《最大的唯一数字》SQL查询错误问题
你的查询问题出在分组后直接对每个组取最大值:
当你用GROUP BY num时,每个仅出现一次的num会被分成单独的组,此时对每个组执行MAX(num),得到的就是该组本身的num值——所以最终会返回所有符合“仅出现一次”的数字,而不是这些数字里的最大值。
正确写法1:子查询+外层取最大值
先筛选出所有仅出现一次的数字,再在外层查询中取它们的最大值:
SELECT MAX(num) AS num FROM ( SELECT num FROM MyNumbers GROUP BY num HAVING COUNT(num) = 1 ) AS single_nums
这种写法天然满足题目要求:如果没有符合条件的数字(所有数字都重复),外层MAX会返回NULL。
正确写法2:窗口函数(MySQL 8.0+)
用窗口函数计算所有符合条件数字的最大值,再去重取结果:
SELECT DISTINCT MAX(num) OVER() AS num FROM MyNumbers GROUP BY num HAVING COUNT(num) = 1 LIMIT 1
内容的提问来源于stack exchange,提问作者snoopy dog
相关产品推荐
相关产品推荐

