Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Coluna Alias ​​em uma Cláusula WHERE


Não testado, mas este hack deve funcionar ...
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

Ele funciona simplesmente criando uma tabela temporária a partir de sua instrução select original (sem a cláusula where e a ordenação), que possui os nomes das colunas que você especificar. Em seguida, você seleciona com os nomes de coluna que deseja.

Uma abordagem melhor pode ser criar uma exibição, com os nomes de coluna que você deseja, e selecionar na exibição...
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;

E depois...
SELECT * FROM newtable
WHERE given_name LIKE 'levi%' 
ORDER BY given_name DESC LIMIT 0 , 25