Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:Entfernen Sie doppelte Werte aus einer Auswahl basierend auf 2 Feldern

Für diese spezielle Frage max(language) sollte funktionieren, da d kleiner als e ist.

BEARBEITEN (Lösung, die nicht kaputt geht):

Fügen Sie max(case language when 'default' then 0 else 1 end) hinzu

Edit2 (Noch besser):

Fügen Sie max(case language when 'english' then 1 else 0 end) hinzu Sie erhalten also nicht einmal doppelte Werte, wenn Sie Ihrem in() weitere Sprachen hinzufügen Abschnitt

EDIT-Nr. 2:

Wie versprochen bin ich hier mit einem frischen neuen Montagmorgengeist und habe die richtige Abfrage für Ihre Bedürfnisse :-)

Versuchen Sie es

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;

Erklärung:GROUP_CONCAT und LTRIM