我正在尝试对两个表执行左连接查询,其中两个表中有公共(public)字段名称。我模糊的理解是 MYSQL 不记得某些表的首字母缩写,所以你最好使用别名。但是,以下查询在别名 muuserid 上引发未知列错误。
非常感谢有关如何修复的建议。
$sql= "SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m
ON cid = personid
WHERE muserid = '$userid' ";
最佳答案
这与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 clause
- GROUP BY clause
- HAVING clause
- SELECT clause
- ORDER BY clause.
关于MYSQL PHP 语法别名连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430264/