Не е тестван, но този хак трябва да работи...
SELECT * FROM (
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1
) as temptable
WHERE given_name LIKE 'levi%'
ORDER BY given_name DESC LIMIT 0 , 25
Работи, като просто създава временна таблица от вашия оригинален оператор select (без клаузата where и подреждане), която има имената на колоните, които сте посочили. След това избирате от това с имената на колоните, които искате.
По-добър подход може да бъде да създадете изглед с имената на колоните, които искате, и да изберете от изгледа...
CREATE VIEW newtable AS
SELECT profile.id AS id, given.name AS 'given_name', family.name AS 'family_name'
FROM green_profile profile
LEFT JOIN green_name given ON given.profileid = profile.id AND given.name_typeid = 0
LEFT JOIN green_name family ON family.profileid = profile.id AND family.name_typeid = 1;
И тогава...
SELECT * FROM newtable
WHERE given_name LIKE 'levi%'
ORDER BY given_name DESC LIMIT 0 , 25