mysql - 错误:连接两个表时不是唯一的表/别名
问题描述
我需要上一课和当前课的详细信息。我正在使用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`
解决方案
FROM
如果表在子句中出现多次(包括任何JOIN
s),则必须使用唯一别名来处理表的列。否则参考是模棱两可的,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;
注意a1
的a5
别名a
。
使用这个 SQL Fiddle来查看它的实际效果。
推荐阅读
- go - 使用 fasthttp 库为维护的会话保存 cookie
- javascript - Puppeteer - 使用多个选择器选择元素
- qubes-os - 安装 Qubes 4.0.3 UEFI
- django - 姜戈;Bugsnag 不适用于带有 Eventlet 的 Gunicorn
- reactjs - 通过用户输入 gatsbyJS + Firebase 显示过滤产品列表
- image - Rails 6,webpacker:image_pack_tag 呈现错误的图像路径,将“assets/”添加到 URI
- javascript - 访问当前页面的 Frontmatter -- Gatsby/React
- python - 为什么我不能使用 Spyder 4 中的库?
- java - 格式化 JFrame 元素的最佳方式
- javascript - 如何将 App.js 中的道具传递给我的登录组件?