首页 > 解决方案 > 为什么我的 SQL 子查询会出现语法错误?使用计数()

问题描述

问题是:有更多的评论中有“爱”这个词还是“恨”这个词?

这是我尝试使用的代码:

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

另一种变化:

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

我收到一个错误:

“SELECT”附近的语法错误

我尝试过几次调整代码,但我不断收到语法错误。我可以自己运行任何一个选择语句,它们都会执行。我只是无法让它们在单个查询中运行。

标签: sqlsubquery

解决方案


I prefer to use sum instead of count here when using a condition case expression - since you really are adding up (summing) the number of 1s from each case expression

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

推荐阅读