集約されていない各フィールドはグループ化する必要があります。
これは標準の動作であり、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つのクエリに分割できます:
- 集計IDと投稿IDを取得する
- 取得したIDを使用して投稿データを取得します(
IN clause
を使用) )