sql >> Databáze >  >> RDS >> Mysql

Alias ​​sloupce v klauzuli WHERE

Netestováno, ale tento hack by měl fungovat...

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

Funguje to tak, že jednoduše vytvoříte dočasnou tabulku z vašeho původního příkazu select (bez klauzule where a řazení), která má vámi zadané názvy sloupců. Z toho pak vyberete s názvy sloupců, které chcete.

Lepším přístupem může být vytvořit zobrazení s požadovanými názvy sloupců a vybrat ze zobrazení...

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;

A pak...

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


  1. SELECT z tabulky se seznamem Varying IN v klauzuli WHERE

  2. Jak zajistím, aby rozšíření SQLSRV fungovalo s PHP, protože MSSQL je zastaralé?

  3. MySql select IN klauzule řetězec oddělený čárkou

  4. Proč je LEFT JOIN pomalejší než INNER JOIN?