Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como resolver não está no erro GROUP BY na consulta mysql


Cada campo não agregado deve ser agrupado.

É um comportamento padrão, que no mysql, depende do modo ONLY_FULL_GROUP_BY.
Este modo é habilitado por padrão em>=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

Ou você pode aggregate isto:
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

Outra maneira - altere sql_mode :
SET SESSION sql_mode = '';

Além disso, você pode dividi-lo em 2 consultas:
  1. Obter IDs agregados e de postagem
  2. Obter dados de postagens com IDs buscados (com IN clause )