Mỗi trường không được tổng hợp nên được nhóm lại.
Đây là hành vi tiêu chuẩn, trong mysql, phụ thuộc vào chế độ ONLY_FULL_GROUP_BY.
Chế độ này được bật mặc định trong> =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
Hoặc, bạn có thể aggregate
nó:
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
Theo cách khác - thay đổi sql_mode
:
SET SESSION sql_mode = '';
Ngoài ra, bạn có thể chia nó thành 2 truy vấn:
- Nhận id tổng hợp và đăng
- Nhận dữ liệu bài đăng với id đã tìm nạp (với
IN clause
)