sql >> Databasteknik >  >> RDS >> Mysql

Hur man undviker fel aggregerade funktioner är inte tillåtna i WHERE

Ersätt WHERE sats med HAVING , så här:

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID
HAVING count(p.CAT) > 3;

HAVING liknar WHERE , det vill säga båda används för att filtrera de resulterande posterna men HAVING används för att filtrera på aggregerad data (när GROUP BY används).



  1. Left Join returnerar inte alla rader

  2. ACID-egenskaperna för uttalanden och transaktioner

  3. Hur man tar bort mysql-databas genom shell-kommando

  4. Snabbare alternativ i Oracle till VÄLJ ANTAL(*) FRÅN någon