Mysql
 sql >> Database >  >> RDS >> Mysql

SQL:rimuove i valori duplicati da una selezione basata su 2 campi

Per questa particolare domanda max(language) dovrebbe funzionare perché d è minore di e.

EDIT (soluzione che non si rompe):

Aggiungi max(case language when 'default' then 0 else 1 end)

Edit2 (Ancora meglio):

Aggiungi max(case language when 'english' then 1 else 0 end) quindi non otterrai nemmeno valori duplicati se aggiungi più lingue al tuo in() sezione

EDIT Nr. 2:

Come ho promesso, eccomi qui con una nuova mente del lunedì mattina e ho la domanda giusta per le tue esigenze :-)

Prova

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;

Spiegazione:GROUP_CONCAT e LTRIM