Pro tuto konkrétní otázku max(language)
by mělo fungovat, protože d je menší než e.
UPRAVIT (Řešení, které se nerozbije):
Přidejte max(case language when 'default' then 0 else 1 end)
Edit2 (ještě lepší):
Přidejte max(case language when 'english' then 1 else 0 end)
takže ani nezískáte duplicitní hodnoty, pokud do in()
přidáte další jazyky sekce
EDIT Č. 2:
Jak jsem slíbil, jsem zde s čerstvou pondělní ranní myslí a dostal jsem správný dotaz pro vaše potřeby :-)
Zkuste
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;
Vysvětlení:GROUP_CONCAT a LTRIM