Elk niet-geaggregeerd veld moet worden gegroepeerd.
Het is standaardgedrag, dat in mysql afhangt van de ONLY_FULL_GROUP_BY-modus.
Deze modus is standaard ingeschakeld in>=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
Of u kunt aggregate
het:
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
Andere manier - verander sql_mode
:
SET SESSION sql_mode = '';
U kunt het ook opdelen in 2 zoekopdrachten:
- Geaggregeerde en post-ID's ophalen
- Gegevens van berichten ophalen met opgehaalde id's (met
IN clause
)