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