Mysql 非唯一表/别名

Mysql 非唯一表/别名,mysql,mysql-error-1066,Mysql,Mysql Error 1066,我得到错误错误1066(42000):非唯一表/别名: 我想不出它有什么毛病 SELECT Project_Assigned.ProjectID, Project_Title, Account.Account_ID, Username, Access_Type FROM Project_Assigned JOIN Account   ON Project_Assigned.AccountID = Account.Account_ID JOIN Project   ON Project_Ass

我得到错误
错误1066(42000):非唯一表/别名:

我想不出它有什么毛病

SELECT Project_Assigned.ProjectID, Project_Title, Account.Account_ID, Username, Access_Type
FROM Project_Assigned 
JOIN Account 
  ON Project_Assigned.AccountID = Account.Account_ID
JOIN Project
  ON Project_Assigned.ProjectID = Project.Project_ID
where Access_Type = 'Client';

您的查询包含的列可能在您引用的多个表中以相同的名称出现,因此出现“非唯一”错误。最好是在联接时显式引用和/或使用表别名

试一试


您应该发布表架构。您正在抛出许多没有引用其表的列,如果这些列是唯一的,则这是正常的。但是,我建议您开始使用表名的别名,并在加入时始终使用表别名作为列的前缀。这听起来可能很幼稚,但您确定这是产生该错误的查询吗?您是否尝试将查询直接运行到mysql控制台或phpMyAdmin中?我总是通过mysql控制台在终端中执行mysql查询,并且我已经尝试了足够多的时间来修复它,以知道这是它执行时的错误。@Shef-您是否有关于为什么在这个查询中需要表别名的更多信息?我无法用MySQL 5.0在这里重现错误消息:-?需要注意的是。另外,我使用的是MySQL 5.5.9,上面的查询是如何获得客户的名字的,来自具有相同帐户ID的分离客户端表的姓氏?HiÁlvaro可能是因为两个联接-
联接项目上的帐户。AccountID=Account.Account\u ID联接项目上的项目。ProjectID=Project.Project\u ID
对于它们,编译器不知道引用了哪些表,因为“投射“不是唯一的-它们可能来自任何一个表,因此编译器可能会抱怨而不是猜测。。。除非您使用别名:)经验法则,否则无论何时加入都要使用别名,并且在引用中要明确。向下投票!为了帮助他人学习,请始终添加注释并解释您的解决方案为何有效。请查看并更新您的答案以提供更多详细信息。具体来说,如果您解释一下这是如何解决问题的,这将是非常有帮助的
    SELECT pa.ProjectID, p.Project_Title, a.Account_ID, a.Username, a.Access_Type, c.First_Name, c.Last_Name
      FROM Project_Assigned pa
INNER JOIN Account a
        ON pa.AccountID = a.Account_ID
INNER JOIN Project p
        ON pa.ProjectID = p.Project_ID
INNER JOIN Clients c
        ON a.Account_ID = c.Account_ID
     WHERE a.Access_Type = 'Client';
 select persons.personsid,name,info.id,address
    -> from persons
    -> inner join persons on info.infoid = info.info.id;