您好,我在尝试达到值 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/