sql >> Database teknologi >  >> RDS >> Mysql

MySql 5.7 ORDER BY-klausul er ikke i GROUP BY-klausul og indeholder ikke-aggregeret kolonne

Dette er din forespørgsel:

SELECT p.title, COUNT(t.qty) AS total 
-------^
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY t.item
---------^
ORDER BY t.created DESC;
---------^

De pegede steder har problemer. Bemærk, at SELECT og GROUP BY henviser til en anden kolonne. I en LEFT JOIN , du (stort set) altid ønsker at aggregere efter noget i den første tabel, ikke den anden.

ORDER BY er et andet problem. Du samler ikke efter denne kolonne, så du skal beslutte, hvilken værdi du ønsker. Jeg gætter på MIN() eller MAX() :

SELECT p.title, COUNT(t.qty) AS total 
FROM payments t LEFT JOIN
     products AS p 
     ON p.id = t.item 
WHERE t.user = 1 
GROUP BY p.title
ORDER BY MAX(t.created) DESC;

Jeg vil også tilføje at COUNT(t.qty) er mistænkt. Normalt qty refererer til "mængde", og det du ønsker er summen:SUM(t.qty) .



  1. Kan ikke installere plpython3u - postgresql

  2. Nærmeste steder med bredde- og længdegrad

  3. MySQL database tabel til HTML tabel

  4. Få VIEW ddl ved hjælp af query