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

SQL Case When语句求助:选法国时无法返回FR20、FR40

问题分析与解决方案

你的SQL语句确实存在语法问题,核心原因是:

  • CASE 属于行级标量表达式,要求每个分支必须返回单个值(一行一列),但你在THEN分支里嵌套的子查询返回了两行数据,违反了SQL对CASE表达式的语法规则,会触发“子查询返回多于一行”的错误。

正确写法

要实现“当Country为'France'时返回FR20和FR40两个ID”的需求,无需使用CASE,直接通过条件过滤结合行构造即可:

写法一:拆分查询+条件过滤

SELECT 'FR20' AS ID
WHERE ${Country} = 'France'
UNION ALL
SELECT 'FR40' AS ID
WHERE ${Country} = 'France'

写法二:先构造数据集再过滤

SELECT ID
FROM (
    SELECT 'FR20' AS ID
    UNION ALL
    SELECT 'FR40' AS ID
) AS temp_ids
WHERE ${Country} = 'France'

如果需要在${Country}不等于'France'时返回特定值,可以在数据集里补充对应行并添加条件判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:57:33