Cada campo no agregado debe agruparse.
Es un comportamiento estándar, que en mysql depende del modo ONLY_FULL_GROUP_BY.
Este modo está activado por defecto en>=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
O bien, puede aggregate
es:
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
De otra manera:cambie sql_mode
:
SET SESSION sql_mode = '';
Además, puede dividirlo en 2 consultas:
- Obtener identificadores agregados y de publicación
- Obtener datos de publicaciones con identificaciones obtenidas (con
IN clause
)