Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak rozwiązać nie ma błędu GROUP BY w zapytaniu mysql

Każde pole niezagregowane powinno być pogrupowane.

Jest to standardowe zachowanie, które w mysql zależy od trybu ONLY_FULL_GROUP_BY.
Ten tryb jest domyślnie włączony w>=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

Lub możesz aggregate to:

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

Inny sposób - zmień sql_mode :

SET SESSION sql_mode = '';

Możesz również podzielić to na 2 zapytania:

  1. Pobierz identyfikatory zbiorcze i postów
  2. Pobierz dane postów z pobranymi identyfikatorami (z klauzulą ​​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. Implementacja algorytmu ray-castingu w MySQL?

  2. Czy MySQL może niezawodnie przywracać kopie zapasowe zawierające widoki, czy nie?

  3. Czy istnieje RZECZYWISTA różnica wydajności między kluczami podstawowymi INT i VARCHAR?

  4. kolumna sygnatury czasowej mysql

  5. Błąd:Źródło danych odrzuciło nawiązanie połączenia, wiadomość z serwera:Za dużo połączeń