Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich alle Datensätze von Level 1, die nur eine bestimmte Anzahl von Werten in Level 2 haben

Verbinden Sie die Tabelle mit einer Unterabfrage, die die Anzahl der Zeilen für die übergeordnete Abfrage zählt, und wählen Sie nur die mit der gewünschten Anzahl aus.

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

Ersetzen Sie :child mit der Anzahl der Kinder, die Sie zuordnen möchten.

DEMO

Mit COUNT(Column2) statt COUNT(*) ignoriert die Zeilen, in denen Column2 ist NULL , sodass A100 nicht enthalten ist .