2012-11-17 41 views
0

我正试图做两个表做一个左连接,这两个表中有共同的字段名称查询。我对模糊的理解是,MYSQL不记得某些表的首字母,所以你最好使用别名。但是,以下查询将在别名muserid上引发未知列错误。MYSQL PHP SYNTAX别名加入

想知道如何解决的建议。

$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

当你选择'C *'为什么你要选择'c.id'一遍吗? – bonCodigo

+0

创建别名cid – user1260310

回答

2

这不是JOIN。在MySQL中,SELECT语句在WHEREFROM子句之后进行评估,因为您无法引用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数据库的查询执行顺序:

  • FROM子句
  • WHERE子句
  • GROUP BY子句
  • HAVING子句
  • SELECT子句
  • ORDER BY子句。

1:MySQL query execution order

+0

'on子句'中的未知列'cid' – user1260310

+0

此评论已发布在操作系统早期的答案上: “有一些关于它识别第一个表的首字母缩写但不是第二个 - user1260310“ – bonCodigo

+0

@ user1260310 - 尝试'ON c.id = m.personid',而不是我的更新答案。 –