我有这个问题

SELECT
    COUNT(
            CASE
                WHEN restricted LIKE '%us%' THEN 2
                ELSE 1
            END) AS totalcount
FROM
    reviews
WHERE
    restricted LIKE '%us%'

这将统计列(受限)中出现的“us”等值的总数。此列由muultiselect复选框中的值以这种“异常”方式填充:
*美国*加拿大*英国*等。
这很管用。没问题。
现在,我需要计算这个值(us)不出现的地方。
我试着这么做,一个“经典”。
SELECT
    COUNT(
            CASE
                WHEN restricted NOT LIKE '%us%' THEN 2
                ELSE 1
            END
    ) AS totalcount
FROM
    reviews
WHERE
    restricted NOT LIKE '%us%'

我已经宣布国家不喜欢但是现在。。。问题。。。它还计算未填充“restricted”列的行(有些列表不使用此列)。计数是错误的。
有人能帮忙吗?

最佳答案

“restricted”列上的空值或空值将传递“restricted NOT LIKE“%us%”
“声明。尝试更改为:

SELECT
    COUNT(
            CASE
                WHEN restricted NOT LIKE '%us%' THEN 2
                ELSE 1
            END
    ) AS totalcount
FROM
    reviews
WHERE
    restricted NOT LIKE '%us%'
    AND restricted != ''
    AND restricted IS NOT NULL

08-19 04:34