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

Hvordan man løser er ikke i GROUP BY fejl i mysql forespørgsel

Hvert ikke-aggregeret felt skal grupperes.

Det er standardadfærd, som i mysql afhænger af ONLY_FULL_GROUP_BY-tilstand.
Denne tilstand er som standard aktiveret i>=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

Eller du kan aggregate det:

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

Anden måde - skift sql_mode :

SET SESSION sql_mode = '';

Du kan også opdele det i 2 forespørgsler:

  1. Få samlede og post-id'er
  2. Få indlægsdata med hentede id'er (med IN clause )


  1. Hvordan får man det sidste indsatte id?

  2. Få resterende dage, timer og minutter ved at bruge mySql

  3. SQL Server 2005 - Eksporter tabel programmatisk (kør en .sql-fil for at genopbygge den)

  4. PostgreSQL:hvordan man installerer plpythonu-udvidelsen