sql >> Database >  >> RDS >> Mysql

MySql 5.7 ORDER BY-clausule staat niet in GROUP BY-clausule en bevat niet-geaggregeerde kolom

Dit is uw vraag:

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 aangewezen plaatsen hebben problemen. Merk op dat de SELECT en GROUP BY verwijzen naar een andere kolom. In een LEFT JOIN , u (vrijwel) altijd wilt aggregeren door iets in de eerste tafel, niet de tweede.

De ORDER BY is een ander probleem. U aggregeert niet op basis van deze kolom, dus u moet beslissen welke waarde u wilt. Ik gok MIN() of 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;

Ik zal ook toevoegen dat COUNT(t.qty) is verdacht. Normaal qty verwijst naar "hoeveelheid" en wat je wilt is de som:SUM(t.qty) .



  1. django.db.utils.IntegrityError:kolom venue_city bevat null-waarden

  2. PHP-tekenreeksverschillen en dynamische beperkingen

  3. java.sql.SQLEException:ORA-01843:geen geldige maand

  4. Converteer nummer naar datum sql orakel