Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :supprimer les valeurs en double d'une sélection basée sur 2 champs

Pour cette question particulière max(language) devrait fonctionner car d est inférieur à e.

EDIT (Solution qui ne cassera pas):

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

Edit2 (Encore mieux) :

Ajouter max(case language when 'english' then 1 else 0 end) donc vous n'obtiendrez même pas de valeurs en double si vous ajoutez plus de langues à votre in() rubrique

MODIFIER N° 2 :

Comme je l'ai promis, me voici avec un nouvel esprit du lundi matin et j'ai la bonne requête pour vos besoins :-)

Essayez

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;

Explication :GROUP_CONCAT et LTRIM