sql >> Databasteknik >  >> RDS >> Mysql

Kolumn Alias ​​i en WHERE-klausul

Otestat, men detta hack borde fungera...

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

Det fungerar genom att helt enkelt skapa en temporär tabell från din ursprungliga select-sats (utan where-satsen och ordningsföljden), som har de kolumnnamn du anger. Du väljer sedan från detta med de kolumnnamn du vill ha.

Ett bättre tillvägagångssätt kan vara att skapa en vy, med de kolumnnamn du vill ha, och välja från vyn...

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;

Och sedan...

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


  1. PLS-00394:Fel antal värden i INTO-listan för en fetch-sats

  2. Deklarera variabel i Bash?

  3. Exkludera värdet för en post i en grupp om en annan är närvarande v2

  4. RMAN Backup-kommandon