MYSQL PHP语法别名联接
我正在尝试对两个表进行查询,在这两个表中存在公共字段名的情况下进行左联接。我模糊的理解是MYSQL不记得某些表的首字母,所以最好使用别名。但是,以下查询在别名muserid上引发未知列错误 如果您能就如何修复提出建议,我们将不胜感激MYSQL PHP语法别名联接,mysql,join,syntax,alias,Mysql,Join,Syntax,Alias,我正在尝试对两个表进行查询,在这两个表中存在公共字段名的情况下进行左联接。我模糊的理解是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 = '$use
$sql= "SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m
ON cid = personid
WHERE muserid = '$userid' ";
这与加入无关。在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子句
- WHERE子句
- 分组依据子句
- 有从句
- SELECT子句
- 按条款排序
1:当您选择
c.*
时,为什么您必须再次选择c.id
?on子句中的未知列“cid”此评论已由操作系统在我的回答中发布:“它有一些东西可以识别第一个表的首字母,但不能识别第二个表的首字母,反之亦然。”–user1260310@user1260310-改为在c.id=m.personid上尝试,如我更新的答案中所示。在执行顺序优先性方面,Mahmoud有很好的把握。因为@user1260310想要使用别名,所以这个问题变得很有趣。但是如果你决定使用首字母缩写,它就行了*