sql >> データベース >  >> RDS >> Mysql

WHERE句の列エイリアス

    テストされていませんが、このハックは機能するはずです...

    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
    

    これは、指定した列名を持つ元のselectステートメント(where句と順序なし)から一時テーブルを作成するだけで機能します。次に、必要な列名を使用してこれから選択します。

    より良いアプローチは、必要な列名を使用してビューを作成し、ビューから選択することです...

    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;
    

    そして...

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


    1. テーブルに挿入できる列/値の最大数-mysql

    2. クリスマスが早く来る(Oracle 12.2)

    3. MySQLケース/If/ Then

    4. Mysqlは、トラフィックの多いデータベースでフィルターを使用して行をカウントします