首页 > 解决方案 > 错误:连接两个表时不是唯一的表/别名

问题描述

我需要上一课和当前课的详细信息。我正在使用fk's 以获得更好的性能。由于fkcurrentClassId&fkpreviousClassId试图获取同一列的信息studentClass。可能是这导致了错误,有人可以帮我解决这个问题。

错误:Not unique table/alias

我的查询:

         Select `fkStudentId`,`fkcurrentClassId`,`fkpreviousClassId`,`studentClass` 

            from
               dbStudents`.`tbStudentClass`
            join
              `dbStudents`.`tbStudentClass`
            on 
              `tbClass`.`pkClassId` = `tbStudentClass`.`fkcurrentClassId`
            join 
              `dbStudents`.`tbStudentClass`
            on
              `tbClass`.`pkClassId` = `tbStudentClass`.`fkpreviousClassId`

标签: mysqlsql

解决方案


FROM如果表在子句中出现多次(包括任何JOINs),则必须使用唯一别名来处理表的列。否则参考是模棱两可的,DBMS 不能告诉你想要什么。

由于您没有为您的表发布 DDL(或 DML),也没有确切地发布您想要在那里执行的操作,所以我遇到了与 DBMS 相同的问题,并且不知道您的查询是什么。所以我只能给你举一个不相关的例子。您必须自己从查询中的连接表中找出您想要的内容,并相应地为其设置别名。

SELECT a1.a,
       a2.a,
       a3.a,
       a4.a,
       a5.a,
       a1.i,
       a2.i,
       a3.i,
       a4.i,
       a5.i
       FROM a a1
            INNER JOIN a a2
                       ON a2.i = a1.i
            INNER JOIN a a3
                       ON a3.i = a2.i
            INNER JOIN a a4
                       ON a4.i = a3.i
            INNER JOIN a a5
                       ON a5.i = a4.i;

注意a1a5别名a

使用这个 SQL Fiddle来查看它的实际效果。


推荐阅读