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

SQL将CASE语句移至子查询外无法识别title、body字段问题求解

报错原因

你把CASE移到外层时系统识别不了title、body字段,是因为外层查询只能访问子查询返回的列,原来的子查询没有把这两个字段包含在返回结果里,自然无法调用。

调整后的SQL代码
SELECT 
  CASE
    WHEN UPPER(title) LIKE '%AGREE%' OR UPPER(body) LIKE '%AGREE%'
    THEN 'YES'
    ELSE 'NO'
  END AS "是/否",
  year AS "年份",
  ROUND(avg(view_count),2) AS "平均数量"
FROM (
  SELECT 
    EXTRACT(YEAR FROM creation_date) AS year,
    view_count,
    title,
    body
  FROM posts_questions
  WHERE 
    UPPER(title) LIKE '%AGREE%' 
    OR UPPER(body) LIKE '%AGREE%'
    OR UPPER(title) LIKE '%DISAGREE%' 
    OR UPPER(body) LIKE '%DISAGREE%'
) x
GROUP BY year, "是/否"
ORDER BY year;
逻辑说明
  • 子查询仅做基础数据过滤和必要字段提取,把后续计算需要用到的年份、浏览量、标题、内容字段全部返回,去掉了原代码子查询里不必要的分组、排序逻辑,性能更优
  • CASE判断移到外层查询的字段定义部分,直接调用子查询返回的title、body字段即可正常运行,最终输出的三列完全匹配需求
  • 修正了原代码的隐含问题:原外层聚合用了view_count字段,但原逻辑的子查询没有返回该字段,调整后已补全

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:18:03