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

Bagaimana mengatasi tidak ada kesalahan GROUP BY dalam permintaan mysql

Setiap bidang non-agregat harus dikelompokkan.

Ini adalah perilaku standar, yang di mysql, tergantung pada mode ONLY_FULL_GROUP_BY.
Mode ini secara default diaktifkan di>=5.7 .

select posts.id, post.user_id, count(likings.id) as likes_count
from posts
left join likings on likings.post_id = posts.id and likings.isActive= 1
group by posts.id, posts.user_id
order by likes_count desc 
limit 5

Atau, Anda dapat aggregate itu:

select posts.id, MIN(post.user_id), count(likings.id) as likes_count
from posts
left join likings on likings.post_id = posts.id and likings.isActive= 1
group by posts.id
order by likes_count desc 
limit 5

Cara lain - ubah sql_mode :

SET SESSION sql_mode = '';

Juga, Anda dapat membaginya menjadi 2 kueri:

  1. Dapatkan kumpulan dan id pos
  2. Dapatkan data postingan dengan id yang diambil (dengan IN clause )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengatur Ulang Kata Sandi Root MySQL atau MariaDB di Linux

  2. Mengapa Django ORM jauh lebih lambat daripada SQL mentah

  3. Cara tercepat untuk memasukkan 134675 nilai dalam basis data jarak jauh

  4. Versi portabel MySql

  5. Versi Django MySQLdb tidak cocok dengan _mysql versi Ubuntu