Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एसक्यूएल:2 फ़ील्ड के आधार पर चयन से डुप्लिकेट मान हटाएं

इस विशेष प्रश्न के लिए max(language) काम करना चाहिए क्योंकि d, e से कम है।

संपादित करें (समाधान जो टूटेगा नहीं):

जोड़ें max(case language when 'default' then 0 else 1 end)

संपादित करें2 (और भी बेहतर):

जोड़ें max(case language when 'english' then 1 else 0 end) इसलिए यदि आप अपने in() . में और भाषाएं जोड़ते हैं तो आपको डुप्लीकेट मान भी नहीं मिलेंगे अनुभाग

संपादित करें 2:

जैसा कि मैंने वादा किया था, मैं यहां एक नए सोमवार की सुबह दिमाग के साथ हूं और आपकी आवश्यकताओं के लिए सही प्रश्न प्राप्त किया है :-)

कोशिश करें

SELECT value,
       CASE group_concat(language)
         WHEN 'default' then 'default'
         ELSE LTRIM(REPLACE(group_concat(language SEPARATOR ' '),'default',''))
       END as language,
       externID
FROM demo
WHERE externID = 10
AND   language in ('default','english')
GROUP BY value;

व्याख्या:GROUP_CONCAT और LTRIM




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैसकल यूजर क्रिएशन स्क्रिप्ट

  2. MySQL डेटाबेस से कनेक्ट करना

  3. PHP वेरिएबल्स को सेनिटाइज़ करना, क्या मैं इसका अत्यधिक उपयोग कर रहा हूँ?

  4. mysql डेटाबेस स्वचालित विभाजन

  5. पीडीओ एकाधिक नामित प्लेसहोल्डर डेटा पुनर्प्राप्त नहीं करते हैं