मेरा प्रश्न MySQL अनुकूलन और अच्छी प्रैक्टिस के बारे में है।MySQL: FIELD/GROUP द्वारा आदेश
मुझे ऑर्डर वरीयता के साथ अनुवादित टेक्स्ट सूची प्राप्त करनी है: यदि मुझे अंग्रेजी में टेक्स्ट नहीं मिल रहा है, तो मैं फ्रेंच टेक्स्ट का उपयोग करना चाहता हूं और यदि यह अस्तित्व में नहीं है, तो मैं स्पेनिश का उपयोग करना चाहता हूं।
दूसरे शब्दों में, मेरे पास है:
id lang text
1 fr text_FR
1 en text_EN
1 es text_ES
2 fr text_FR2
3 fr text_FR3
3 es text_ES3
और मैं चाहता हूँ:
id lang text
1 en text_EN
2 fr text_FR2
3 fr text_FR3
तो मैं this, this, that, या that जैसे कुछ विषयों को पढ़ने के। ठीक। मैंने कोशिश की यह:
SELECT text FROM (
SELECT id, text
FROM translation
ORDER BY FIELD(lang, 'en', 'fr', 'es')
) tt GROUP BY tt.id;
लेकिन, जब मैं इस क्वेरी व्याख्या, मैं पढ़ सकते हैं:
id select_type table partitions type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> NULL ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
2 DERIVED translation NULL ALL PRIMARY PRIMARY 52 1641 Using filesort
तो यह सबक्वेरी की वजह से अनुकूल नहीं है,। क्या मैं इस सबक्वायरी से बच सकता हूं?
दिलचस्प, 'COALESCE' के बारे में पता नहीं था! – xiankai