MySql 选择计数...不喜欢

标签 mysql sql select count sql-like

我有这个查询

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/

相关文章:

mysql select语句不起作用

Jquery .change() 函数不适用于动态填充的 SELECT 列表

php - 确定 php 脚本中使用的内存

php - 没有被重定向到登录

mysql - 使用 .txt 文件填充 MySQL 数据库的问题

sql - T-SQL错误: Incorrect syntax near '+'

qt - qt sqlite select语句

mysql - 为什么我的删除内部联接不起作用?

MySql JSON 数据类型未使用正确的编码

java - 坚持使用 sql/hql 查询组