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

SQL使用ORDER BY排序后查询结果列全为NULL值问题排查

问题原因

  • 你当前的查询不符合题目输出要求:SELECT子句返回了name、birth两列,题目要求仅单列展示人员姓名
  • 加ORDER BY birth后看到全为NULL的结果是排序规则导致:绝大多数SQL引擎默认NULL值排序优先级高于非NULL值,所有无出生年份的人员会被排在结果最前,你看到的只是结果集的前半部分,滚动后即可看到有出生年份的正常人员数据。

正确SQL写法

要满足题目要求,同时优化排序体验,可以使用以下查询:

SELECT DISTINCT name
FROM people
WHERE id IN (    
    SELECT person_id
    FROM stars
    WHERE movie_id IN (
        SELECT id
        FROM movies
        WHERE year = 2004
    )
)
ORDER BY birth NULLS LAST;

如果你的SQL引擎不支持NULLS LAST语法(比如旧版本SQLite),可以换用以下写法:

SELECT DISTINCT name
FROM people
WHERE id IN (    
    SELECT person_id
    FROM stars
    WHERE movie_id IN (
        SELECT id
        FROM movies
        WHERE year = 2004
    )
)
ORDER BY CASE WHEN birth IS NULL THEN 1 ELSE 0 END, birth;

说明

  • 只保留SELECT DISTINCT name,符合输出仅单列姓名的要求
  • 调整排序规则后,有出生年份的人员会按年份升序排在前面,无出生年份的人员统一排在后面,符合题目排序要求
  • 保留DISTINCT保证同一名演员多次出演2004年电影时仅出现一次

内容的提问来源于stack exchange,提问作者F. Zer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:15:08