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

SQL子查询使用COUNT()报语法错误,如何同时统计含love和hate的评论数量

SQL查询报错修复与统计方案

报错原因

你编写的SQL存在两个核心问题:

  1. COUNT()函数中不能直接嵌套子查询,作为标量返回的子查询需要整体用括号包裹,且统计逻辑要放在子查询内部
  2. 外层冗余的FROM review会导致子查询逐行重复执行,既浪费性能,还会返回和评论表行数一致的重复统计结果,属于无效语法

修正方案

方案1:调整原有子查询逻辑

如果你要保留原有子查询的写法,只需要调整括号位置、去掉外层冗余的表引用即可,修改后代码如下:

SELECT
    (SELECT COUNT(id) FROM review WHERE text LIKE '%love%') AS NumLove,
    (SELECT COUNT(id) FROM review WHERE text LIKE '%hate%') AS NumHate;

方案2:性能更优的条件聚合写法

上述写法需要遍历两次评论表,数据量大的时候效率较低,推荐使用条件聚合只遍历一次表完成统计:

SELECT
    SUM(CASE WHEN text LIKE '%love%' THEN 1 ELSE 0 END) AS NumLove,
    SUM(CASE WHEN text LIKE '%hate%' THEN 1 ELSE 0 END) AS NumHate
FROM review;

直接对比结果的写法

如果需要直接得到哪类评论更多的结论,可以在上述统计基础上增加判断逻辑:

SELECT
    NumLove,
    NumHate,
    CASE 
        WHEN NumLove > NumHate THEN '包含love的评论数量更多'
        WHEN NumHate > NumLove THEN '包含hate的评论数量更多'
        ELSE '两类评论数量相等'
    END AS compare_result
FROM (
    SELECT
        SUM(CASE WHEN text LIKE '%love%' THEN 1 ELSE 0 END) AS NumLove,
        SUM(CASE WHEN text LIKE '%hate%' THEN 1 ELSE 0 END) AS NumHate
    FROM review
) AS stat_result;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:45:02