Para esta pregunta en particular max(language)
debería funcionar porque d es menor que e.
EDITAR (Solución que no se romperá):
Agregue max(case language when 'default' then 0 else 1 end)
Edit2 (Aún mejor):
Agregar max(case language when 'english' then 1 else 0 end)
por lo que ni siquiera obtendrá valores duplicados si agrega más idiomas a su in()
sección
EDITAR Nro. 2:
Como prometí, aquí estoy con una nueva mente fresca de lunes por la mañana y obtuve la consulta adecuada para sus necesidades :-)
Prueba
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;
Explicación:GROUP_CONCAT y LTRIM