Mysql 尝试与自然联接生成的相同关系进行比较时出现语法错误

Mysql 尝试与自然联接生成的相同关系进行比较时出现语法错误,mysql,sql,natural-join,Mysql,Sql,Natural Join,我试图为一个MySQL数据库编写一个查询,它比较由自然连接生成的同一关系中的两个元组 数据库中有author和author_number的关系,这两个关系可以自然连接起来,以创建一个显示所有作者及其所有电话号码的关系 我正在尝试编写一个查询,只返回共享同一电话号码的作者的元组 我写了一个查询,我相信它背后有正确的想法,但我做了一些错误的事情,因为我在尝试运行它时遇到了语法错误 以下是我目前的查询,我认为可以: SELECT A.first_name, A.last_name, A.pNumber

我试图为一个MySQL数据库编写一个查询,它比较由自然连接生成的同一关系中的两个元组

数据库中有author和author_number的关系,这两个关系可以自然连接起来,以创建一个显示所有作者及其所有电话号码的关系

我正在尝试编写一个查询,只返回共享同一电话号码的作者的元组

我写了一个查询,我相信它背后有正确的想法,但我做了一些错误的事情,因为我在尝试运行它时遇到了语法错误

以下是我目前的查询,我认为可以:

SELECT A.first_name, A.last_name, A.pNumber
FROM (author NATURAL JOIN author_number AS A), (author NATURAL JOIN author_number AS B)
WHERE A.pNumber = B.pNumber;
查询给出了以下错误:

文件“QueryLib.sql”的第60行出现错误1066 42000:不是唯一的表/别名:“author”


另外,我的原始查询没有A.first\u名称等。在SELECT子句中,它只有first\u名称等。但我收到了相同的错误消息。

首先请注意,自然连接被认为是有害的:。最好编写一个显式的内部联接

回到你的问题上来。您需要引用自然联接中的各个表。例如:

SELECT
  A1.first_name, A1.last_name, AN1.phone_number
FROM
  Author A1 NATURAL JOIN AuthorNumber AN1,
  Author A2 NATURAL JOIN AuthorNumber AN2
WHERE
  AN1.phone_number = AN2.phone_number AND
  NOT (A1.first_name = A2.first_name AND A1.last_name = A2.last_name);

演示:。

首先请注意,自然连接被认为是有害的:。最好编写一个显式的内部联接

回到你的问题上来。您需要引用自然联接中的各个表。例如:

SELECT
  A1.first_name, A1.last_name, AN1.phone_number
FROM
  Author A1 NATURAL JOIN AuthorNumber AN1,
  Author A2 NATURAL JOIN AuthorNumber AN2
WHERE
  AN1.phone_number = AN2.phone_number AND
  NOT (A1.first_name = A2.first_name AND A1.last_name = A2.last_name);

演示:。

您以一种奇怪的方式混合了隐式连接和自然连接,这会导致语法错误。在两个表中给出样本数据,并对应预期输出。若这个问题可以通过正则连接来解决,我会和他们一起去。这里的别名是author implicitly、A、author implicitly&B。同一个别名不能使用两次。A&B别名作者编号。似乎你可能想从作者自然加入作者编号中选择*作为A和B。请阅读并采取行动。PS通常在使用自然连接时,我们希望通过子选择重命名列。别名用于非自然连接。PS One不需要同时使用自然连接和非自然连接来完成您想要的操作。您以一种奇怪的方式混合了隐式连接和自然连接,这会导致语法错误。在两个表中给出样本数据,并对应预期输出。若这个问题可以通过正则连接来解决,我会和他们一起去。这里的别名是author implicitly、A、author implicitly&B。同一个别名不能使用两次。A&B别名作者编号。似乎你可能想从作者自然加入作者编号中选择*作为A和B。请阅读并采取行动。PS通常在使用自然连接时,我们希望通过子选择重命名列。别名用于非自然连接。PS一个不需要使用自然和非自然的连接来做你想做的事。请注意,认为自然加入有害的人是那些不了解关系模型的人。并且不能胜任为它设计模式。请注意,认为自然加入有害的人是那些不理解关系模型的人,并且不能胜任为它设计模式。