MySQL LEFT加入别名问题

时间:2015-03-31 07:32:56

标签: mysql join alias

(已编辑)我正在尝试编写一个sql join。

SELECT a.id, 
                   a.name,
                   c.name AS 'gender',
                   a.email,
                   a.phone, 
                   a.address,
                   b.name AS 'level', 
                   a.level_id
            FROM ms_user a 
            LEFT JOIN lt_user_level b 
            ON a.level_id = b.id 
            LEFT JOIN lt_user_gender c 
            ON a.gender_id = c.id 
            WHERE a.id LIKE '%".$id."%'
            AND a.name LIKE '%".$name."%' 
            AND 'gender' LIKE '%".$gender."%'
            AND a.email LIKE '%".$email."%'                 
            AND a.phone LIKE '%".$phone."%'                                 
            AND a.address LIKE '%".$address."%'
            AND 'level' LIKE '%".$level."%'                                                 
            AND a.status <> 'D'

现在我想按性别和级别搜索数据。但是,它没有出现

2 个答案:

答案 0 :(得分:1)

您在where条件中使用别名,如果要使用列别名,则必须使用完整列名或使用having子句

AND 'gender' LIKE '%".$gender."%'

AND c.name LIKE '%".$gender."%'

同样适用于

 AND 'level' LIKE '%".$level."%'

 AND b.name LIKE '%".$level."%'

答案 1 :(得分:0)

如果要将其与列名一起使用,则需要使用反引号。此外,您不能在where子句中使用别名( Barmar正确指出。

试试这个

SELECT a.id, 
               a.name,
               c.name AS `gender`,
               a.email,
               a.phone, 
               a.address,
               b.name AS `level`, 
               a.level_id
        FROM ms_user a 
        LEFT JOIN lt_user_level b 
        ON a.level_id = b.id 
        LEFT JOIN lt_user_gender c 
        ON a.gender_id = c.id 
        WHERE a.id LIKE '%".$id."%'
        AND a.name LIKE '%".$name."%' 
        AND c.name LIKE '%".$gender."%'
        AND a.email LIKE '%".$email."%'                 
        AND a.phone LIKE '%".$phone."%'                                 
        AND a.address LIKE '%".$address."%'
        AND  b.name LIKE '%".$level."%'                                                 
        AND a.status <> 'D'