Každé neagregované pole by mělo být seskupeno.
Je to standardní chování, které v mysql závisí na režimu ONLY_FULL_GROUP_BY.
Tento režim je ve výchozím nastavení povolen v>=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
Nebo můžete aggregate to:
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
Jiný způsob - změňte sql_mode :
SET SESSION sql_mode = '';
Můžete jej také rozdělit na 2 dotazy:
- Získejte souhrnná ID a ID příspěvků
- Získejte data příspěvků s načtenými ID (s
IN clause)