0

我正在尝试对两个执行左连接的表进行查询,其中两个表中有共同的字段名称。我的模糊理解是 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' "; 
4

1 回答 1

2

这不是关于JOIN。在 MySQL 中,SELECT语句在WHEREandFROM子句之后进行评估,因为您不能在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 子句
  • GROUP BY 子句
  • HAVING 子句
  • 选择子句
  • ORDER BY 子句。

1:MySQL查询执行顺序

于 2012-11-17T12:00:27.423 回答