我有这个查询
SELECT
COUNT(
CASE
WHEN restricted LIKE '%us%' THEN 2
ELSE 1
END) AS totalcount
FROM
reviews
WHERE
restricted LIKE '%us%'
这会计算列中出现的“us”等值的总数(受限)。此列由多选复选框中的值以这种“不寻常”的方式填充:
*美国*加拿大*英国*等
这有效。没问题。
现在,我需要计算这个值(us)没有出现的地方。 我尝试这样做,一个“经典”。
SELECT
COUNT(
CASE
WHEN restricted NOT LIKE '%us%' THEN 2
ELSE 1
END
) AS totalcount
FROM
reviews
WHERE
restricted NOT LIKE '%us%'
我已经声明了 NOT LIKE 语句,但是现在...问题...它还计算“受限”列未填充的行(某些列表不使用此列)。而且计数错误。
请问有人可以帮忙吗?
最佳答案
不需要 CASE 语句。您的 WHERE 子句意味着 ELSE 永远不会被命中。
匹配“我们”:
SELECT
COUNT(restricted) AS 'Count matching *us*'
FROM
reviews
WHERE
restricted IS NOT NULL
AND restricted LIKE '%us%'
不匹配“us”(包括 null):
SELECT
COUNT(restricted) AS 'Count not matching *us*'
FROM
reviews
WHERE
restricted IS NULL
OR restricted NOT LIKE '%us%'
关于MySql 选择计数...不喜欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552350/