小编典典

对称交叉连接

sql

我正在尝试i,j从表中的每个元素中提取所有对对,而该表是同一张表中的每个元素,这是我的查询:

select a.Id L,b.id R into #cross from MyTable a cross join mytable b

我处于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)

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

The SELECT INTO statement cannot have same source and destination tables

我怎样才能有效地做到呢?

编辑 仅供参考,我说:“我需要一半的记录”,这是错误的,在服用后账户记录计数i,j == j,in*(n+1)/2


阅读 150

收藏
2021-04-14

共1个答案

小编典典

因此,只需对连接进行条件调整,以使左侧始终等于或小于左侧!

    select a.Id L,b.id R
      into #cross
      from MyTable a
inner join mytable b on a.id <= b.id
2021-04-14