Give this a try,
SELECT *
FROM labels
WHERE parent_id = x AND
lang =
(
SELECT lang
FROM labels
WHERE parent_id = x
ORDER BY FIELD(lang, 'en', 'de') DESC
LIMIT 1
)
The FIELD() function returns the index of string in the list.
Here's using JOIN
SELECT DISTINCT a.*
FROM labels a
INNER JOIN
(
SELECT parent_id, lang
FROM labels
WHERE parent_id = 1
ORDER BY FIELD(lang, 'en', 'de') DESC
LIMIT 1
) b ON a.parent_id = b.parent_id AND
a.lang = b.lang
WHERE a.parent_id = 1