gpt4 book ai didi

sql - 没有重复组合的交叉连接

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

我知道这个问题与这个问题非常相似:
Symmetric cross join
还有这个:
combinations (not permutations) from cross join in sql

但是如果我们有两个不同的表,比如说 A 和 B:

select A.id,B.id from A cross join B

我想考虑这对 (a,b)等于 (b,a) ?

最佳答案

select A.id aid,B.id bid
from A inner join B on a.id <= b.id
union
select B.id,A.id
from A inner join B on b.id < a.id

如果你想变得更复杂:
select distinct
case when a.id<=b.id then a.id else b.id end id1,
case when a.id<=b.id then b.id else a.id end id2
from A cross join B

在我用小 table 进行的不科学的小烘焙中,后者更快。下面是 case写成子查询的表达式。
select distinct
(select MIN(id) from (select a.id union select b.id)[ ]) id1,
(select MAX(id) from (select a.id union select b.id)[ ]) id2
from A cross join B

关于sql - 没有重复组合的交叉连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12932045/

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