आपको group by
. करना होगा सब कुछ एक समग्र फ़ंक्शन का उपयोग नहीं कर रहा है:
SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid
FROM messages
WHERE employer_id='$employerid' AND last='company'
GROUP BY candidate_id, message, jobpost_id, staffuserid
अगर आपका message
प्रति पंक्ति अलग है और आप group by candidate_id
, तो आपको message
. का उपयोग नहीं करना चाहिए . उस स्थिति में, बस इसे अपनी चयन सूची से हटा दें और आपको अपने group by
में इसकी आवश्यकता नहीं होगी सूची। वही किसी अन्य फ़ील्ड के लिए जाता है जिसका आप उपयोग नहीं कर रहे हैं।
याद रखें, एग्रीगेट फ़ंक्शंस का उपयोग करते समय, आपको प्रत्येक फ़ील्ड को या तो एग्रीगेट फ़ंक्शन या group by
. में शामिल करना चाहिए . अन्यथा, SQL को पता नहीं चलेगा कि किस पंक्ति से लौटाई गई पंक्ति के लिए डेटा खींचना है।
अपडेट करें:
आप जो खोज रहे हैं उसे देखने के बाद, यह काम करेगा:
SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid
FROM messages
WHERE employer_id='$employerid' AND last='company' AND
created_unix = (
SELECT max(subm.created_unix)
FROM messages subm
WHERE subm.candidate_id = messages.candidate_id
)