gpt4 book ai didi

SQLite 自然连接坏了?

转载 作者:行者123 更新时间:2023-12-03 17:04:12 30 4
gpt4 key购买 nike

我刚刚开始了解 NATURAL JOIN,而 SQLite 并没有像我预期的那样表现。

SELECT * FROM r1 NATURAL JOIN (r2 NATURAL JOIN r3);


SELECT * FROM (r1 NATURAL JOIN r2) NATURAL JOIN r3;

产生相同(正确)的结果。

但是,如果我省略括号,如下所示:
SELECT * FROM r1 NATURAL JOIN r2 NATURAL JOIN r3;

我看到 r1 和 r2 正确连接但是 r3 根本没有连接到结果中,而是形成了 r1 NATURAL JOIN r2, r3 的笛卡尔积。

第一个连接结果的属性名称有问题,还是我误解了 SQL?

最佳答案

我自己不使用那个数据库,但是根据 this documentation , SQLite 中的所有连接都是基于左右表的笛卡尔积。
NATURAL连接使用公共(public)列名作为“键”来组合两个表。使用括号强制在处理外连接之前构建“派生表”。没有括号,它不会“看到”公共(public)列名,所以第二个 NATURAL关键字被忽略。

一点建议:了解 NATURAL JOIN 的机制是很好的。万一你在代码中看到它,但不要自己使用它。这是一个没有什么值(value)的“危险”结构。只是我的观点。

关于SQLite 自然连接坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545476/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com