sql >> Databasteknik >  >> RDS >> Mysql

Hämta alla poster för nivå 1 som endast har specificerat antal värden i nivå 2

Gå med i tabellen med en underfråga som räknar antalet rader för den överordnade, och välj bara de med det antal du vill ha.

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

Ersätt :child med antalet barn du försöker matcha.

DEMO

Använder COUNT(Column2) istället för COUNT(*) kommer att ignorera raderna där Column2 är NULL , så den innehåller inte A100 .




  1. Uppdaterar MySQL primärnyckel

  2. Indexeringsstrategi för olika kombinationer av WHERE-satser inkl. textmönster

  3. Hur man partitionerar en tabell med ett LIKE-kriterium i Mysql

  4. Hur infogar man saker som now() -intervall '2 minuter' i PHP PDO-fråga?