鉴于表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)