W przypadku tego konkretnego pytania max(language)
powinno działać, ponieważ d jest mniejsze niż e.
EDIT (rozwiązanie, które się nie zepsuje):
Dodaj max(case language when 'default' then 0 else 1 end)
Edit2 (jeszcze lepiej):
Dodaj max(case language when 'english' then 1 else 0 end)
więc nie otrzymasz nawet zduplikowanych wartości, jeśli dodasz więcej języków do swojego in()
sekcja
EDYCJA Nr. 2:
Tak jak obiecałem, oto jestem ze świeżym, nowym umysłem w poniedziałek i mam właściwe zapytanie dla twoich potrzeb :-)
Wypróbuj
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;
Wyjaśnienie:GROUP_CONCAT i LTRIM