प्रत्येक गैर-एकत्रित फ़ील्ड को समूहीकृत किया जाना चाहिए।
यह मानक व्यवहार है, जो 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 प्रश्नों में विभाजित कर सकते हैं:
- कुल प्राप्त करें और आईडी पोस्ट करें
- प्राप्त आईडी के साथ पोस्ट डेटा प्राप्त करें (
IN clause
. के साथ )