sql >> Database >  >> RDS >> Mysql

Hoe gegroepeerde records alleen selecteren als elk record in een groep aan bepaalde criteria in MySQL voldoet?

Ik stel de volgende vraag voor:

SELECT COUNT(a.id) AS total_records, a.disregard_inventory, a.qty
    FROM artikelstammdaten a
    ...
GROUP BY a.style
HAVING (SUM(a.qty) != 0 OR (a.disregard_inventory = 1))
       AND (SUM(qty>0) = total_records)

De laatste voorwaarde die ik aan de query heb toegevoegd, maakt het mogelijk om alleen een stijl te retourneren als het aantal maten voor dit product (total_records ) is gelijk aan het aantal beschikbare maten voor dit product (SUM(qty>0) ).
qty>0 zal ofwel 0 retourneren (wanneer het product niet beschikbaar is in de opgegeven maat, of 1 (wanneer het beschikbaar is). Dus SUM(qty>0) retourneert een geheel getal tussen 0 en het totale aantal maten.



  1. Gegevens afgekapt voor kolom 'xxxx' in rij 1

  2. Efficiënt samenvoegen over intervalbereiken in SQL

  3. Afbeeldingen toewijzen aan lijstBekijk items Tutorial-03

  4. SQL-instructie batchgewijs invoegen