mysql - 我尝试在 mysql 'CASE WHEN' 条件下使用 IN

标签 mysql sql case conditional-statements

您好,我在尝试达到值 3 时遇到问题,因为我的查询无法识别使用“IN”子句选择的两个国家/地区

a)这是我的简单表格源:

id |国家

1 | CL

2 | BR

b) 这是我的 sql 查询:

SELECT
(
CASE 
    WHEN country ='CL' THEN 1
    WHEN country = 'BR' THEN 2
    WHEN country IN ('BR','CL') THEN 3
    ELSE 0
END) AS result 
FROM countries 
WHERE country IN ('BR','CL') ;

c) 这是当前的输出结果:

结果

1

2

最佳答案

您似乎想要如下所示的内容:

SELECT CASE 
          WHEN cntAll = 2 THEN 3
          WHEN cntCL >= 1 THEN 1
          WHEN cntBR >= 1 THEN 2
          ELSE 0           
       END AS result
FROM (
  SELECT COUNT(DISTINCT country) AS cntAll,
         COUNT(CASE WHEN country = 'CL' THEN 1 END) AS cntCL,
         COUNT(CASE WHEN country = 'BR' THEN 1 END) AS cntBR
  FROM countries
  WHERE country IN ('CL', 'BR')) AS t

countries 表中存在两个 ('CL', 'BR') 值时,输出为 3,否则如果仅存在 'CL' 则输出为 1,否则如果仅存在 'BR' 则输出为 2,否则输出为0

关于mysql - 我尝试在 mysql 'CASE WHEN' 条件下使用 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33612499/

相关文章:

mysql - Magento:备份建议

mysql - Sequelize 迁移方言错误 - MYSQL

如果数据为 Null 或使用 CASE 语句为空,则 MySQl 查询 UPDATE

haskell - 不同类型的case表达式导致Haskell

MySql - 从最大内例中排除默认日期

PHP/MYSQL - Insert into ignore,忽略指定列

c# - MySQL Query 和 DataGridView - 关联具有相同 ID 的数据

sql - 如何找到具有定义列的表?

mysql - SQL 查询 : Separate column where IDs are the same but type is different

mysql - 有更好的方法来设计这个数据库结构