SQL 中不是唯一的表/别名

Not unique table/alias in SQL

提问人:linhcheee 提问时间:8/8/2022 最后编辑:marc_slinhcheee 更新时间:8/9/2022 访问量:257

问:

我试图创建一个新表,其中包含来自 2 个表和 .两个表都有一列,但值不同;两个表都有一列(相同的值),这是我尝试匹配的列。provincedistrict_wardNAMEPROVINCE_ID

预期输出为

PROVINCE_ID / NAME / NAME

通过列查找所有匹配项 NAME = “Vung Tau” in province。NAMEdistrict_wardPROVINCE_ID

这是我的查询,但它抛出了一个错误

1066:“非唯一表/别名”

USE db1;

SELECT province.PROVINCE_ID, province.NAME, district_ward.NAME
FROM province as p, district_ward as d
INNER JOIN d ON p.PROVINCE_ID=d.PROVINCE_ID and p.NAME = "Vũng Tàu"
GROUP BY p.PROVINCE_ID
MySQL SQL 联接 数据库设计 匹配

评论

0赞 philipxy 8/8/2022
你有 2 张表,你把它们都称为“d”。PS [混合隐式和显式 JOIN](stackoverflow.com/q/761545/3404097 PS 这些都是常见问题解答。最小可重现示例 Stack Overflow 用户需要做多少研究工作? 如何提问帮助中心
0赞 jarlh 8/8/2022
...FROM province as p INNER JOIN district_ward as d ON ....
0赞 jarlh 8/8/2022
顺便说一句,您的 GROUP BY 无效。你想做什么?在寻求 SQL 帮助时,一个最小的可重现示例是一个很好的开始。
0赞 marc_s 8/9/2022
要改掉的坏习惯:使用旧式的 JOIN - 旧式逗号分隔的表列表样式在 ANSI-92 SQL 标准(30 年前)中被正确的 ANSI 语法所取代,不鼓励使用它。将这种旧风格混合在一起,然后在上面混合,真的是完全没有用的,并且会引起无尽的悲伤和心痛 - 停止这样做 - 现在。JOININNER JOIN

答:

0赞 Nima Souri 8/8/2022 #1

也许你应该试试这个:

USE db1;

SELECT province.PROVINCE_ID, province.NAME, district_ward.NAME

FROM province as p

INNER JOIN district_ward as d USING (PROVINCE_ID)

WHERE p.NAME = "Vũng Tàu"

GROUP BY p.PROVINCE_ID;

评论

0赞 jarlh 8/8/2022
我预计这里会出现错误。 意味着您无法访问省份。PROVINCE_ID了。USING (PROVINCE_ID)
0赞 Rick James 8/9/2022
不错的尝试,但问题是问题,不是.dprovince_id
0赞 Rick James 8/9/2022 #2

不要使用“逗号 JOIN”

FROM  province as p, district_ward as d
INNER JOIN  d  ON ...

相反,请执行

FROM  province as p
INNER JOIN district_ward as d  ON ...

((可选)使用 instead of -- 但这不是问题所在。USINGON