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

我知道这个问题与这个问题非常相似:
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

在我用小桌子烘烤的小不科学中,后者更快.在下面,将表达式表达式写为子查询.

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

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03