gpt4 book ai didi

sql - 不同连接操作的用途是什么?

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

SQL中不同的join操作有什么用?就像我想知道为什么我们需要不同的内部和外部连接?

最佳答案

您真正需要的唯一连接类型是 LEFT OUTER JOIN .每一种其他类型的连接都可以根据一个或多个左外部连接以及可能的一些过滤来重写。那么为什么我们需要所有其他的呢?仅仅是为了迷惑人吗?如果只有一种连接类型不是更简单吗?

你也可以问:为什么两者都有 a <= bb >= a ?这些不都在做同样的事情吗?我们不能摆脱其中之一吗?它会简化事情!

有时交换更容易<=>=而不是交换参数。类似地,左连接和右连接是相同的,只是操作数交换了。但是,同时拥有这两个选项而不是要求人们按特定顺序编写查询也是可行的。

你可以问的另一件事是:在逻辑上为什么我们有 AND , OR , NOT , XOR , NAND , NOR , 等等?所有这些都可以改写为NAND !为什么不只有 NAND ?嗯,是 awkward写一个 ORNAND 方面s,它的意图并不明显 - 如果你写 OR ,人们立即知道你的意思。如果你写一堆NAND s,你想要达到的目标并不明显。

同样,如果你想做a FULL OUTER JOIN b您可以进行左连接和右连接,删除重复的结果,然后合并所有。但这很痛苦,所以有一个简写。

你什么时候用每一个?这是一个简化的规则:

  • 如果您总是希望 LEFT 表中的每一行都有一个结果行,请使用 LEFT OUTER JOIN。
  • 如果您总是希望 RIGHT 表中的每一行都有一个结果行,请使用 RIGHT OUTER JOIN。
  • 如果您总是希望每个表中的每一行都有一个结果行,请使用 FULL OUTER JOIN。
  • 如果在两个表中都有一行时只需要结果行,请使用 INNER JOIN。
  • 如果您想要所有可能的行对,每个表中的一行,请使用 CROSS JOIN。
  • 关于sql - 不同连接操作的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617126/

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