sql >> Databasteknik >  >> RDS >> Mysql

Hur man löser det finns inte i GROUP BY-felet i mysql-frågan

Varje icke aggregerat fält bör grupperas.

Det är standardbeteende, som i mysql, beror på ONLY_FULL_GROUP_BY-läget.
Det här läget är standardaktiverat 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 så kan du 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

Annat sätt - ändra sql_mode :

SET SESSION sql_mode = '';

Du kan också dela upp det i 2 frågor:

  1. Hämta samlade och inläggs-id
  2. Få inläggsdata med hämtade ID (med IN clause )


  1. MySQL - length() vs char_length()

  2. Skapar ActionScript Date-objekt från MySQL UTC-tidsstämpelsträng

  3. Hitta rankningen av ett heltal i mysql

  4. Hur använder jag PHP korrekt för att koda MySQL-objekt till JSON?