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

SQL使用CASE WHEN创建比赛结果表语法错误排查

SQL语法错误定位

你的建表语句共有4处会直接导致执行失败的问题:

  • 字段分隔符缺失:away_team_goal 字段和后续CASE逻辑之间没有加逗号,SQL解析器会认为字段列表未正常分隔
  • CASE表达式语法混用:你写的CASE winner是「简单CASE表达式」的写法(要求后面跟WHEN 常量值 THEN 结果的结构),但后续写的是布尔条件判断,属于「搜索型CASE表达式」的用法,两种写法不能混写;搜索型CASE直接以CASE开头即可,判断结果需要通过AS winner指定字段名
  • 非法符号残留:代码里[ELSE 'Tie']的方括号是语法文档里标记可选参数的符号,实际执行的SQL中不能保留这对方括号
  • DROP语句容错缺失:直接执行DROP TABLE results时,如果results表之前不存在,会直接抛出表不存在的错误中断执行
修正后可直接运行的代码
DROP TABLE IF EXISTS results;
CREATE TABLE results AS
SELECT 
    match_api_id, 
    season, 
    Country.name AS country_name, 
    League.name AS league_name, 
    stage, 
    Match.home_team_api_id,
    Match.away_team_api_id, 
    home_team_goal, 
    away_team_goal,
    CASE
        WHEN home_team_goal > away_team_goal THEN 'Home Wins'
        WHEN away_team_goal > home_team_goal THEN 'Away Wins'
        ELSE 'Tie'
    END AS winner
FROM Match
    INNER JOIN Country ON Match.country_id = Country.id 
    INNER JOIN League ON Match.league_id = League.id;

SELECT * FROM results;

补充优化说明:给关联后的国家名、联赛名字段加了独立别名,避免两个字段重名都叫name,后续查询时无法区分。

内容的提问来源于stack exchange,提问作者Jose Luis Estrada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:27:32