Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:remova valores duplicados de uma seleção com base em 2 campos


Para esta pergunta em particular max(language) deve funcionar porque d é menor que e.

EDIT (Solução que não vai quebrar):

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

Edit2 (Ainda melhor):

Adicione max(case language when 'english' then 1 else 0 end) para que você nem obtenha valores duplicados se adicionar mais idiomas ao seu in() seção

EDITAR Nº. 2:

Como prometi, aqui estou eu com uma nova mente de segunda-feira e tenho a consulta certa para suas necessidades :-)

Tentar
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;

Explicação:GROUP_CONCAT e LTRIM