Mysql
 sql >> база данни >  >> RDS >> Mysql

Клаузата MySql 5.7 ORDER BY не е в клаузата GROUP BY и съдържа неагрегирана колона

Това е вашето запитване:

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;
---------^

Посочените места имат проблеми. Забележете, че SELECT и GROUP BY се отнасят до различна колона. В LEFT JOIN , вие (до голяма степен) винаги искате да обобщавате по нещо в първия таблица, а не втората.

ORDER BY е друг проблем. Вие не обобщавате по тази колона, така че трябва да решите коя стойност искате. Предполагам MIN() или 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;

Също така ще добавя, че COUNT(t.qty) е заподозрян. Обикновено qty се отнася за "количество" и това, което искате, е сумата:SUM(t.qty) .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql 5.7.20:Не може да се създаде JSON стойност от низ с CHARACTER SET 'binary'

  2. Инструкциите UPDATE са в крайно състояние на заявката

  3. MySQL:списък на сумата за няколко условия в един SQL оператор

  4. Как да трансформирате MSSQL CTE заявка в MySQL?

  5. Има ли FIND_IN_SET по индекс в MySQL?