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:
- Dapatkan kumpulan dan id pos
- Dapatkan data postingan dengan id yang diambil (dengan
IN clause
)