Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySql 5.7 klausa ORDER BY tidak ada dalam klausa GROUP BY dan berisi kolom yang tidak diagregasi

Ini pertanyaan Anda:

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

Tempat-tempat yang ditunjuk memiliki masalah. Perhatikan bahwa SELECT dan GROUP BY mengacu pada kolom yang berbeda. Dalam LEFT JOIN , Anda (hampir) selalu ingin menggabungkan dengan sesuatu di pertama tabel, bukan yang kedua.

ORDER BY adalah masalah lain. Anda tidak menggabungkan berdasarkan kolom ini, jadi Anda perlu memutuskan nilai mana yang Anda inginkan. Saya menebak MIN() atau 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;

Saya juga akan menambahkan COUNT(t.qty) dicurigai. Biasanya qty mengacu pada "kuantitas" dan yang Anda inginkan adalah jumlah: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. Kesalahan:jenis yang tidak dapat dihash:'dict'

  2. C# MySQL SSL Connection Error saat mencoba menggunakan conn.Open()

  3. Dapatkan Catatan Per Bulan Tetapi Juga Dapatkan Nol Jika Tidak Ada Catatan Bulan Itu

  4. Alat terbaik untuk menyinkronkan database MySQL

  5. Pemesanan berkelompok yang rumit dalam SQL