gpt4 book ai didi

sql 连接语法

转载 作者:行者123 更新时间:2023-12-04 13:46:00 24 4
gpt4 key购买 nike

我是编写 sql 的新手,我有一个关于连接的问题。这是一个示例选择:

select bb.name from big_box bb, middle_box mb, little_box lb
where lb.color = 'green' and lb.parent_box = mb and mb.parent_box = bb;

假设我正在寻找所有大盒子的名称,这些大盒子在它们内部某处嵌套了一个绿色的小盒子。如果我理解正确,上面的语法是另一种获得与使用“join”关键字相同的结果的方法。

问题:上面的 select 语句对于它正在执行的任务是否有效?如果没有,有什么更好的方法来做到这一点?语句是连接的语法糖还是它实际上在做其他事情?

如果您有关于该主题的任何好 Material 的链接,我很乐意阅读它,但由于我不确切知道这种技术的名称,因此我很难在谷歌上搜索它。

最佳答案

您正在使用隐式连接语法。这相当于使用 JOIN 关键字,但最好完全避免这种语法,而是使用显式连接:

SELECT bb.name
FROM big_box bb
JOIN middle_box mb ON mb.parent_box = bb.id
JOIN little_box lb ON lb.parent_box = mb.id
WHERE lb.color = 'green'

您还缺少连接条件中的列名。我猜该列名为 id

如果表被正确索引,这种类型的查询应该是有效的。特别是在连接条件和 little_box.color 上应该有外键约束。

您的查询的一个问题是,如果单个框中有多个绿色框,您将返回重复的行。可以通过在 SELECT 之后添加 DISTINCT 来删除这些重复项。

关于sql 连接语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3731952/

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