sql >> Database teknologi >  >> RDS >> Mysql

Kolonne Alias ​​i en WHERE-klausul

Utestet, men dette hack burde virke...

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 fungerer ved blot at oprette en midlertidig tabel fra din originale select-sætning (uden where-sætningen og rækkefølgen), som har de kolonnenavne, du angiver. Du vælger så fra dette med de kolonnenavne du ønsker.

En bedre tilgang kan være at oprette en visning med de kolonnenavne, du ønsker, og vælge fra visningen...

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;

Og så...

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


  1. Genstart Heroku Postgres Dev DB

  2. Bestil valg baseret på deltagelsesresultater (Sortér samtaler på sidst sendt besked)

  3. Hvordan finder man manglende rækker (datoer) i en mysql-tabel?

  4. Forståelse af tegnsæt og samlinger i MySQL