You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode‘最大唯一数’SQL查询问题:无唯一数时未返回null

问题原因及解决方案

原因分析

你的查询逻辑是先对num分组,筛选出仅出现一次的记录,再按num降序取第一条。当表中没有唯一数时,having count(num)=1会过滤掉所有分组,整个结果集变成空的。这时候ifnull(num,null)根本没有行可以处理,自然返回空表,而不是包含null的一行——因为ifnull是针对每一行的字段值处理,没有行的话它就没作用。

修正方案

方案一:用聚合函数MAX包裹子查询

聚合函数MAX在没有匹配数据时会直接返回null,刚好符合需求:

SELECT MAX(num) AS num
FROM (
    SELECT num
    FROM MyNumbers
    GROUP BY num
    HAVING COUNT(num) = 1
) AS unique_nums;

子查询先找出所有唯一数,外层用MAX取最大值;如果子查询为空,MAX就返回null,最终会得到一行包含null的结果。

方案二:用IFNULL包裹原查询子句

把你的原查询作为子查询放在IFNULL里,确保无论子查询有没有结果,都能返回一行数据:

SELECT IFNULL(
    (SELECT num FROM MyNumbers GROUP BY num HAVING COUNT(num)=1 ORDER BY num DESC LIMIT 1),
    NULL
) AS num;

如果子查询能找到最大的唯一数就返回它,找不到就返回null,最终结果始终是一行。

内容的提问来源于stack exchange,提问作者Kiran Kutte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:34:59