SQL 中 3 个条件的联合与内连接

Posted

技术标签:

【中文标题】SQL 中 3 个条件的联合与内连接【英文标题】:Union v/s Inner join on 3 conditions in SQL 【发布时间】:2021-11-04 01:08:41 【问题描述】:

以下 2 条 SQL 语句会给出相同的结果吗?

SQL1-

A inner join B on (condition1)
union
A inner join B on (condition2)
union
A inner join B on (condition3)

SQL2-

A inner join B on (condition1) OR (condition2) OR (condition3)

【问题讨论】:

是的,他们会的。 这能回答你的问题吗? What is the difference between JOIN and UNION? @Bishan:这应该如何回答这个问题?你读过另一个问题及其答案吗?你明白等待的伪代码查询应该做什么了吗? 试试这个例子。 dbfiddle.uk/… @wait:见 Serg 的回答。我有点快说是的。真正的答案显然是:“是的,如果所选行不同”。 【参考方案1】:

至少它取决于 A 或 B 最初有双打。例如

with A(c) as (
 select 1 union all
 select 1 union all
 select 2 
 ),
B(c)  as (
 select 1 union all
 select 2 union all
 select 3 
 )
select *
from A join B on A.c=B.c
union
select *
from A join B on A.c>B.c

返回 3 行(不同的)。

with A(c) as (
 select 1 union all
 select 1 union all
 select 2 
 ),
B(c)  as (
 select 1 union all
 select 2 union all
 select 3 
 )
select *
from A join B on A.c=B.c or A.c>B.c

由于 A 有双精度,因此返回 4 行。

【讨论】:

没错。在一般情况下,结果可能会有所不同,所以答案确实是no。只是有很多具体的情况是相同的,这是大多数人倾向于考虑的。 一个很好的回答。这是我没有考虑过的情况。

以上是关于SQL 中 3 个条件的联合与内连接的主要内容,如果未能解决你的问题,请参考以下文章

SQL中内连接和外连接的区别

左连接,右连接与内连接

SQL内连接与外连接的区别

sql 内连接和外连接的是啥意思?

关于与内连接结合使用时的外连接

SQL内连接与外连接用法与区别