Mysql
 sql >> Database >  >> RDS >> Mysql

Come risolvere non è nell'errore GROUP BY nella query mysql

Ciascun campo non aggregato deve essere raggruppato.

È un comportamento standard, che in mysql dipende dalla modalità ONLY_FULL_GROUP_BY.
Questa modalità è abilitata per impostazione predefinita 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

Oppure puoi aggregate esso:

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

Altro modo:cambia sql_mode :

SET SESSION sql_mode = '';

Inoltre, puoi dividerlo in 2 query:

  1. Ottieni ID aggregati e post
  2. Ottieni i dati dei post con ID recuperati (con IN clause )