我在Mysql中有2个表,如下所示
表格1
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
我正在尝试在表1中设置一个新字段(名为FLAG),如果在T2中存在t1.YEARMONTH的行,则为Y
我想要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将值设置为Alias字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47917639/