MySQL 5.7 संदर्भ मैनुअल के अनुसार ,
आपको WHERE क्लॉज में उपनाम का उपयोग नहीं करना चाहिए क्योंकि क्वेरी चलाने पर उपनाम उत्पन्न होता है और WHERE स्थिति निष्पादित होने पर तैयार नहीं हो सकता है। आपको उपनाम अज्ञात कॉलम त्रुटि मिलती है क्योंकि क्वेरी के परिणाम के रूप में उत्पन्न होने तक MySQL को उपनाम के बारे में पता नहीं है। इसलिए आप यहां WHERE क्लॉज में उपनाम का उपयोग नहीं कर सकते।
(प्रश्न के बाद जोड़ संपादित करें)
आप निम्न क्वेरी के साथ वांछित परिणाम प्राप्त कर सकते हैं:
SELECT r.id, r.url, MAX(date) as `max_date`
FROM report as r
GROUP BY id, url;
क्वेरी स्पष्टीकरण:SELECT
. में खंड आप केवल उन स्तंभों का उल्लेख करते हैं जिन्हें आप प्रदर्शित करना चाहते हैं, MAX()
फ़ंक्शन पहले से ही अधिकतम मानों का चयन करेगा (इसलिए आपको WHERE क्लॉज की आवश्यकता नहीं है), और ग्रुप बाय क्लॉज परिणाम को id
के आधार पर सभी परिणामों को समूहित करने के लिए कहता है। और फिर url
।