मैं निम्नलिखित क्वेरी में सबक्वेरी से 2 कॉलम का चयन करने का प्रयास कर रहा हूं, लेकिन ऐसा करने में असमर्थ हूं। उपनाम तालिका बनाने की कोशिश की, लेकिन अभी भी उन्हें नहीं मिला।
SELECT
DISTINCT petid,
userid,
(SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate,
(SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID
FROM
pet LEFT JOIN comments ON pet.id = comments.petid
WHERE
userid='ABC' AND
deviceID!='ABC' AND
comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH);
मूल रूप से, मैं एक ही पंक्ति से lastComDate
& पाने की कोशिश कर रहा हूं lastPosterID
- वह पंक्ति जो विशिष्ट पालतू जानवरों के लिए टिप्पणियों में नवीनतम है। कृपया सुझाव दें कि मैं उन्हें एक कुशल तरीके से कैसे प्राप्त कर सकता हूं।
उपरोक्त क्वेरी काम करती है, लेकिन लगता है कि एक ही पंक्ति में दो बार ओवरकिल किया जाता है। इसके अलावा, ORDER BY
क्लॉज एग्रीगेट फंक्शन की तुलना में काफी धीमा है - जैसा कि मैंने क्वेरी को प्रोफाइल करते समय पाया था। तो, एक समाधान छँटाई से बचने की सराहना की जाएगी।
deviceID
से है pets
तालिका - जिसका अर्थ है कि सिर्फ मेरे पालतू जानवर जो 'एबीसी' खुद से प्रस्तुत कर रहे हैं नहीं मिलता है।