在我的 info
数据库中,我有 4 个表,其中两个被命名为 girls
和 boys
并且都有 id
列。 boys
包含12个id
(12条记录),girls
包含8个id
。当我应用此查询时:
SELECT * FROM
boys
NATURAL JOIN
girls
我得到输出为
Empty Set
怎么会这样? (id
列均为 INT、NOT NULL、AUTO_INCREMENT
)。
最佳答案
NATURAL JOIN
是 INNER JOIN 的简写,在同名列上具有相等谓词。
例如,给定两个表“m”和“f”,它们有共同的列名为“id”和“name”,像这样的 NATURAL JOIN
SELECT ...
FROM m
NATURAL
JOIN f
相当于:
SELECT ...
FROM m
JOIN f
ON f.id = m.id
AND f.name = m.name
结果中只会返回两个表中“匹配”的行,不会返回所有其他行。
例如,如果我们有表格内容:
m: id name
-- ---------------
1 peter
2 paul
4 michael jackson
f: id name
-- ---------------
3 mary
4 michael jackson
上面的查询将只返回“m”和“f”中 id=4 的行(作为单行),因为这些是唯一“匹配”的行。
关于mysql - 为什么自然连接在以下情况下输出为空集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616692/