आप ग्रुप के कुख्यात गैर-मानक MySQL एक्सटेंशन का दुरुपयोग कर रहे हैं द्वारा
. मानक SQL हमेशा आपकी क्वेरी को अस्वीकार कर देगा, क्योंकि आप उन स्तंभों का उल्लेख कर रहे हैं जो समुच्चय नहीं हैं और जिनका GROUP BY
में उल्लेख नहीं किया गया है . अपने देव सिस्टम में आप ANY_VALUE()
. के साथ उस पर काम करने की कोशिश कर रहे हैं .
उत्पादन में, आप ONLY_FULL_GROUP_BY MySQL मोड को बंद कर सकते हैं । यह करने का प्रयास करें :
SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
यह MySQL को आपकी क्वेरी स्वीकार करने की अनुमति देगा।
लेकिन देखिए, आपकी क्वेरी वास्तव में सही नहीं है। जब आप इसे चलाने के लिए राजी कर सकते हैं, तो यह images
. से बेतरतीब ढंग से चुनी गई पंक्ति देता है टेबल। इस तरह की अनिश्चितता अक्सर उपयोगकर्ताओं और आपके तकनीकी सहायता दल के लिए भ्रम पैदा करती है।
क्यों न क्वेरी को बेहतर बनाया जाए, इसलिए यह एक खास इमेज को चुनती है। अगर आपकी images
तालिका में एक ऑटोइनक्रिकमेंट है id
कॉलम आप "पहली" छवि का चयन करने के लिए ऐसा कर सकते हैं।
SELECT c.id, c.name, i.*
FROM countries c
LEFT JOIN (
SELECT MIN(id) id, country_id
FROM images
GROUP BY country_id
) first ON c.id = first.country_id
LEFT JOIN images i ON first.id = i.id
वह प्रति देश एक पंक्ति लौटाएगा जिसमें एक अनुमानित छवि दिखाई जाएगी।