sql >> Databáze >  >> RDS >> Mysql

Jak vyřešit není chyba GROUP BY v dotazu mysql

Každé neagregované pole by mělo být seskupeno.

Je to standardní chování, které v mysql závisí na režimu ONLY_FULL_GROUP_BY.
Tento režim je ve výchozím nastavení povolen v>=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

Nebo můžete 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

Jiný způsob - změňte sql_mode :

SET SESSION sql_mode = '';

Můžete jej také rozdělit na 2 dotazy:

  1. Získejte souhrnná ID a ID příspěvků
  2. Získejte data příspěvků s načtenými ID (s IN clause )


  1. Jak získat všechny chyby všech balíčků SSIS v řešení

  2. Vložit velké množství proměnných do tabulky pomocí PDO

  3. Vyberte nejlepší odlišné výsledky seřazené podle frekvence

  4. Oracle text escapující se složenými závorkami a zástupnými znaky