我在 Mysql 中有 2 个表,如下所示
表一
ID YEARMONTH
------------------
1 201210
2 201211
3 201212
表2
ID YEARMONTH GRADE DESIG
--------------------------------
1 201210 G1 NULL
2 201210 G1 D2
3 201212 G1 D1
我正在尝试在 table1 中设置一个新字段(名为 FLAG),如果 t1.YEARMONTH 的行存在于 T2 中则为 Y,否则为 N
我想要在 T1 中得到以下结果
ID YEARMONTH FLAG
---------------------
1 201210 Y
2 201211 N
3 201212 Y
我尝试了以下查询
SELECT
T1.ID,
T1.YEARMONTH,
CASE COUNT(T2.ID)
WHEN (SELECT
COUNT(T2.ID)
FROM TABLE2 T2)
> 0 THEN 'Y'
ELSE 'N'
END AS flag
FROM TABLE1 T1,
table2 T2;
但它产生以下输出
ID YEARMONTH FLAG
---------------------------
1 201210 N
我不知道我的错误在哪里。任何帮助将不胜感激。
最佳答案
尝试使用以下查询:
SELECT
T1.ID, T1.YEARMONTH,
(CASE
WHEN COUNT(T2.ID) > 0 THEN 'Y'
ELSE 'N'
END) AS FLAG
FROM TABLE1 T1
LEFT JOIN TABLE2 T2
ON T1.YEARMONTH = T2.YEARMONTH
GROUP BY T1.ID, T1.YEARMONTH
您可以在此处查看所需的输出 http://sqlfiddle.com/#!9/162855/12
关于mysql - 在 Mysql 中使用 CASE 将值设置为别名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47917639/