Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да разрешите грешката не е в GROUP BY в mysql заявката

Всяко неагрегирано поле трябва да бъде групирано.

Това е стандартно поведение, което в mysql зависи от режима ONLY_FULL_GROUP_BY.
Този режим е активиран по подразбиране в>=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

Или можете да aggregate то:

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

Друг начин - променете sql_mode :

SET SESSION sql_mode = '';

Освен това можете да го разделите на 2 заявки:

  1. Вземете обобщени и публикувани идентификатори
  2. Вземете данни за публикации с извлечени идентификатори (с IN clause )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да актуализирате сериализирани данни в MySQL

  2. MySQL TEXT срещу BLOB срещу CLOB

  3. Анализирайте XML низ в MySQL

  4. Защо съпоставянето по подразбиране на MySQL е latin1_swedish_ci?

  5. Как мога лесно да конвертирам приложение на Django от mySQL в PostgreSQL?