尝试与自然连接生成的相同关系进行比较时出现语法错误
Syntax Error when trying to make a comparison with the same relation generated by a natural join
我正在尝试为 MySQL
数据库编写查询,该数据库比较自然连接生成的相同关系中的两个元组。
数据库有关系 author 和 author_number,可以自然连接以创建显示所有作者及其所有 phone 编号的关系。
我正在尝试编写一个查询,该查询 returns 仅为共享相同 phone 号码的作者的元组。
我写了一个查询,我相信它背后的想法是正确的,但是我做错了,因为当我尝试 运行 它时出现语法错误。
这是我目前认为可行的查询:
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;
查询给出错误:
ERROR 1066 (42000) at line 60 in file: 'QueryLib.sql': Not unique table/alias: 'author'
此外,我的原始查询在 SELECT
子句中没有 A.first_name, etc.
,它只有 first_name, etc.
,但我得到了相同的错误消息。
首先请注意,自然连接被认为是有害的:Is NATURAL (JOIN) considered harmful in production environment?。最好写一个显式的内部连接。
回到你的问题。您需要从自然连接中引用各个表。例如:
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);
我正在尝试为 MySQL
数据库编写查询,该数据库比较自然连接生成的相同关系中的两个元组。
数据库有关系 author 和 author_number,可以自然连接以创建显示所有作者及其所有 phone 编号的关系。
我正在尝试编写一个查询,该查询 returns 仅为共享相同 phone 号码的作者的元组。
我写了一个查询,我相信它背后的想法是正确的,但是我做错了,因为当我尝试 运行 它时出现语法错误。
这是我目前认为可行的查询:
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;
查询给出错误:
ERROR 1066 (42000) at line 60 in file: 'QueryLib.sql': Not unique table/alias: 'author'
此外,我的原始查询在 SELECT
子句中没有 A.first_name, etc.
,它只有 first_name, etc.
,但我得到了相同的错误消息。
首先请注意,自然连接被认为是有害的:Is NATURAL (JOIN) considered harmful in production environment?。最好写一个显式的内部连接。
回到你的问题。您需要从自然连接中引用各个表。例如:
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);