Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni tutti i record di livello 1 che hanno solo il numero specificato di valori nel livello 2

Unisciti alla tabella con una sottoquery che conta il numero di righe per il genitore e seleziona solo quelle con il conteggio desiderato.

SELECT DISTINCT a.level1 AS Parent, a.level2 AS Child
FROM yourTable AS a
JOIN (SELECT level1, COUNT(DISTINCT level2) AS children
      FROM yourTable
      GROUP BY level1) AS b
ON a.level1 = b.level1
WHERE children = :child

Sostituisci :child con il numero di bambini che stai cercando di abbinare.

DEMO

Utilizzando COUNT(Column2) invece di COUNT(*) ignorerà le righe in cui Column2 è NULL , quindi non includerà A100 .