我正在尝试对两个执行左连接的表进行查询,其中两个表中有共同的字段名称。我的模糊理解是MYSQL不记得某些表的首字母,所以你最好使用别名。但是,以下查询会在别名muserid上抛出未知列错误。
非常感谢有关如何修复的建议。
$sql= "SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m
ON cid = personid
WHERE muserid = '$userid' ";
答案 0 :(得分:2)
这不是关于JOIN
。在MySQL中,SELECT
语句在WHERE
和FROM
子句之后进行评估,因为您无法在WHERE
子句中引用别名。试试这个:
SELECT *
FROM
(
SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m ON c.id = m.personid
) t
WHERE muserid = '$userid';
这是MySQL查询执行顺序 1 :
- FROM clause
- WHERE子句
- GROUP BY子句
- HAVING条款
- SELECT条款
- ORDER BY子句。
的 1 强> MySQL query execution order