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 个条件的联合与内连接的主要内容,如果未能解决你的问题,请参考以下文章