sql >> Databáze >  >> RDS >> Mysql

Získejte všechny záznamy úrovně 1, které mají pouze zadaný počet hodnot v úrovni 2

Připojte se k tabulce pomocí poddotazu, který počítá počet řádků pro nadřazenou položku, a vyberte pouze ty, které mají požadovaný počet.

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

Nahraďte :child s počtem dětí, které se snažíte porovnat.

DEMO

Pomocí COUNT(Column2) místo COUNT(*) bude ignorovat řádky, kde je Column2 je NULL , takže nebude obsahovat A100 .




  1. Velikost databáze se po exportu/importu liší

  2. ADDDATE() vs DATE_ADD() v MySQL:Jaký je rozdíl?

  3. Návrh databáze pro náborový systém

  4. SQL Server a Oracle, který z nich je lepší z hlediska škálovatelnosti?