यदि आप अंतिम id
चाहते हैं प्रत्येक asker
. के लिए , तो आपको एक समग्र फ़ंक्शन का उपयोग करना चाहिए:
SELECT max(id) as id,
asker
FROM questions
GROUP by asker
ORDER by id DESC
आपको असामान्य परिणाम मिलने का कारण यह है कि MySQL GROUP BY
. के एक्सटेंशन का उपयोग करता है जो एक चुनिंदा सूची में आइटम को गैर-समेकित होने और ग्रुप बाय क्लॉज में शामिल नहीं करने की अनुमति देता है। हालांकि यह अप्रत्याशित परिणाम दे सकता है क्योंकि MySQL लौटाए गए मानों को चुन सकता है। (देखें MySQL एक्सटेंशन टू ग्रुप बाय
)
MySQL डॉक्स से:
अब यदि आपके पास अन्य कॉलम हैं जिन्हें आपको तालिका से वापस करने की आवश्यकता है, लेकिन उन्हें GROUP BY
में जोड़ना नहीं चाहते हैं असंगत परिणामों के कारण जो आप प्राप्त कर सकते हैं, तो आप ऐसा करने के लिए एक सबक्वायरी का उपयोग कर सकते हैं। (डेमो
)
select
q.Id,
q.asker,
q.other -- add other columns here
from questions q
inner join
(
-- get your values from the group by
SELECT max(id) as id,
asker
FROM questions
GROUP by asker
) m
on q.id = m.id
order by q.id desc