sql >> Base de Datos >  >> RDS >> Mysql

Alias ​​de columna en una cláusula WHERE

No probado, pero este truco debería 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

Funciona simplemente creando una tabla temporal a partir de su declaración de selección original (sin la cláusula where ni el orden), que tiene los nombres de columna que especifique. Luego seleccione de esto con los nombres de columna que desee.

Un mejor enfoque podría ser crear una vista, con los nombres de columna que desee y seleccionar de la vista...

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;

Y entonces...

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