(已编辑)我正在尝试编写一个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'
现在我想按性别和级别搜索数据。但是,它没有出现
答案 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'