sql >> Base de Datos >  >> RDS >> Mysql

Cómo resolver no está en el error GROUP BY en la consulta mysql

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:

  1. Obtener identificadores agregados y de publicación
  2. Obtener datos de publicaciones con identificaciones obtenidas (con IN clause )