如何确定值是否出现在GROUP BY组中

Ken*_*Y-N 8 mysql

鉴于表foo:

Num   Letter
------------
1     A
1     B
1     B
2     C
3     A
3     C
3     D
Run Code Online (Sandbox Code Playgroud)

如果我这样做,SELECT * GROUP BY Num我当然得到这样的东西:

Num   Letter
------------
1     A
2     C
3     A
Run Code Online (Sandbox Code Playgroud)

我想要改进的是:

Num   Has_No_Letter_C
---------------------
1     Yes
2     No
3     No
Run Code Online (Sandbox Code Playgroud)

可能有一个简单的SELECT IF ()加号ORDER BY,但我现在看不到它......

在我的实际示例中,结果表被LEFT JOIN编辑到另一个表,我希望能够拒绝这些No条目,但NULL如果我的另一个表bar有一个Num= 4行,则保留s .

egg*_*yal 17

使用SUM(condition)范围内IF:

SELECT   Num,
         IF(SUM(Letter = 'C'), 'Yes', 'No') AS Has_Letter_C
FROM     my_table
GROUP BY Num
Run Code Online (Sandbox Code Playgroud)

JOIN然后你变成:

SELECT   another_table.Num
FROM     another_table LEFT JOIN my_table ON another_table.Num = my_table.Num
GROUP BY another_table.Num
HAVING   my_table.Num IS NULL OR SUM(my_table.Letter = 'C') > 0
Run Code Online (Sandbox Code Playgroud)