Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir tous les enregistrements du niveau 1 qui n'ont qu'un nombre spécifié de valeurs dans le niveau 2

Joignez-vous à la table avec une sous-requête qui compte le nombre de lignes pour le parent, et sélectionnez uniquement celles avec le nombre souhaité.

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

Remplacez :child avec le nombre d'enfants que vous essayez de faire correspondre.

DEMO

Utilisation de COUNT(Column2) au lieu de COUNT(*) ignorera les lignes où Column2 est NULL , il n'inclura donc pas A100 .