Data la tabella di foo
:Come determinare se un valore compare in un gruppo per gruppo
Num Letter
------------
1 A
1 B
1 B
2 C
3 A
3 C
3 D
Se faccio SELECT * GROUP BY Num
Io naturalmente ottenere qualcosa di simile:
Num Letter
------------
1 A
2 C
3 A
quello che avevo come definire questa a è:
Num Has_No_Letter_C
---------------------
1 Yes
2 No
3 No
C'è probabilmente un semplice SELECT IF()
plu sa ORDER BY
, ma non riesco a vedere in questo momento ...
Nel mio esempio del mondo reale, la tabella risultante è LEFT JOIN
ed ad un altro tavolo e voglio essere in grado di respingere le voci No
ma mantenere il NULL
s se l'altra tabella bar
ha un Num
= 4 righe.
Grazie tu! Il primo funziona. Ho cambiato l'espressione in IF (SUM (Letter = 'C') = COUNT (Letter), 'Yes', 'No') 'come il mio esempio di vita reale ha bisogno di controllare tutte le C, e posso applicarlo a ottenere la mia domanda completa di lavoro. (Probabilmente è anche il momento in cui ho refactored e normalizzato le mie tabelle ...) –
@ KenY-N: Per controllare se sono * tutti * 'C', sarebbe più semplice cercare qualsiasi valore che sia * non * C: 'SUM (Letter <> 'C')'. – eggyal
Ah, certo! –