相关疑难解决方法(0)

来自sql中的交叉连接的组合(不是排列)

如果我有一个我想要交叉连接的表,我该如何删除重复的行?换句话说,我怎么能做一个"订单无所谓"交叉加入?

所以例如,如果我有一个表T:

field |
-------
   A  |
   B  |
   C  |
Run Code Online (Sandbox Code Playgroud)

我交叉加入自己,所以我没有得到A | 一排

T as t1
cross join
T as t2
  on t1.field != t2.field
Run Code Online (Sandbox Code Playgroud)

我会得到以下内容:

field | field
------+-------
  A   |   B
  A   |   C
  B   |   A
  B   |   C
  C   |   A
  C   |   B
Run Code Online (Sandbox Code Playgroud)

但是,对我来说A,B与B,A相同.

有没有一个很好的方法来删除这些重复?换句话说,我希望组合而不是排列.

sql self-join cross-join

16
推荐指数
1
解决办法
6671
查看次数

对称交叉连接

我试着i,j从同一个表中的每个元素中提取表中每个元素的所有对说,这里是我的查询:

select a.Id L,b.id R into #cross from MyTable a cross join mytable b 
Run Code Online (Sandbox Code Playgroud)

我处于这样的情况,i,j == j,i所以只需要一半的记录.我天真的尝试是:

select a.Id L,b.id R into #cross from MyTable a cross join mytable b 
where not exists
    (select * from #cross c where c.L=R and c.R=L)
Run Code Online (Sandbox Code Playgroud)

但我插入时无法查询目标表,如SQL Server所述:

The SELECT INTO statement cannot have same source and destination tables
Run Code Online (Sandbox Code Playgroud)

我怎么能以有效的方式做?

编辑 仅供参考,我说:"我需要一半的记录",这是错误的记录数以帐户之后i,j == j,in*(n+1)/2

sql t-sql sql-server

1
推荐指数
1
解决办法
1335
查看次数

标签 统计

sql ×2

cross-join ×1

self-join ×1

sql-server ×1

t-sql ×1