SQL中不同的join操作有什么用?就像我想知道为什么我们需要不同的内部和外部连接?
最佳答案
您真正需要的唯一连接类型是 LEFT OUTER JOIN
.每一种其他类型的连接都可以根据一个或多个左外部连接以及可能的一些过滤来重写。那么为什么我们需要所有其他的呢?仅仅是为了迷惑人吗?如果只有一种连接类型不是更简单吗?
你也可以问:为什么两者都有 a <= b
和 b >= a
?这些不都在做同样的事情吗?我们不能摆脱其中之一吗?它会简化事情!
有时交换更容易<=
至 >=
而不是交换参数。类似地,左连接和右连接是相同的,只是操作数交换了。但是,同时拥有这两个选项而不是要求人们按特定顺序编写查询也是可行的。
你可以问的另一件事是:在逻辑上为什么我们有 AND
, OR
, NOT
, XOR
, NAND
, NOR
, 等等?所有这些都可以改写为NAND
!为什么不只有 NAND
?嗯,是 awkward写一个 OR
在 NAND
方面s,它的意图并不明显 - 如果你写 OR
,人们立即知道你的意思。如果你写一堆NAND
s,你想要达到的目标并不明显。
同样,如果你想做a FULL OUTER JOIN b
您可以进行左连接和右连接,删除重复的结果,然后合并所有。但这很痛苦,所以有一个简写。
你什么时候用每一个?这是一个简化的规则:
关于sql - 不同连接操作的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2617126/