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

MySQL Lead函数返回NULL问题:期望结果与实际不符

问题原因

你的SQL语句执行顺序导致了这个问题:WHERE子句会先于窗口函数执行。当你先筛选出Name='French'的行后,窗口函数Lead()只能在这单独一行的数据集里计算“下一行”,自然没有后续行,返回NULL。

解决方案

需要先计算窗口函数得到所有行的next值,再筛选目标行。可以用子查询或CTE实现:

方法1:子查询

SELECT id, Name, `next`
FROM (
    SELECT id, Name, Lead(Name) OVER (ORDER BY id) AS `next` 
    FROM MyTable
) AS sub_query
WHERE sub_query.Name = 'French';

方法2:CTE(MySQL 8.0及以上版本支持)

WITH LanguageWithNext AS (
    SELECT id, Name, Lead(Name) OVER (ORDER BY id) AS `next` 
    FROM MyTable
)
SELECT id, Name, `next`
FROM LanguageWithNext
WHERE Name = 'French';

执行以上任意语句后,就能得到期望结果:

idNamenext
2FrenchGerman

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:38:15