2

您好我想知道是否可以对列记录进行“笛卡尔积”操作。这是场景:

PIID1           PIID2

PIID11         (Intially empty)
PIID12         (Initially empty)
PIID13         (Initially empty)

所需的输出(删除自我关系):

PIID1             PIID2  
-------- --------------------  
PIID11           PPIID12  
PIID11           PPIID13  
PPIID12          PIID11  
PPIID12          PPIID13  
PPIID13          PPIID12  
PPIID13          PPIID11  

请发布您的解决方案。

4

2 回答 2

1

首先使用自连接插入新行:

INSERT INTO tableX
    (piid1, piid2)
SELECT
    a.piid1, b.piid1
FROM 
    tableX  a
  CROSS JOIN
    tableX  b
WHERE
    a.piid1 <> b.piid1 ;

然后删除原始行:

DELETE FROM tableX
WHERE piid2 IS NULL ;
于 2013-10-21T12:43:11.313 回答
0

尝试SELF JOIN

Select 

    a.pIID1 as PIID1, 
    b.pIID1 as PIID2
    from 
    table a, 
    (Select pIID1 from table) b
    WHERE  a.pIID1<>b.PIID1
于 2013-10-21T12:37:22.403 回答