Per questa particolare domanda max(language)
dovrebbe funzionare perché d è minore di e.
EDIT (soluzione che non si rompe):
Aggiungi max(case language when 'default' then 0 else 1 end)
Edit2 (Ancora meglio):
Aggiungi max(case language when 'english' then 1 else 0 end)
quindi non otterrai nemmeno valori duplicati se aggiungi più lingue al tuo in()
sezione
EDIT Nr. 2:
Come ho promesso, eccomi qui con una nuova mente del lunedì mattina e ho la domanda giusta per le tue esigenze :-)
Prova
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;
Spiegazione:GROUP_CONCAT e LTRIM