每个记录的SQL选择

时间:2014-06-24 10:37:12

标签: sql foreach

我是SQL的新手,我在试图编写一个简单的select来生成表格时感到很生气。 我有一个表格,其中包含不同代码之间的关系,我必须生成一个表格,该表格将与相同密钥相关的每个代码相关联,如下所示:

TABLE CODES

    CODE|KEY
    -------------
    A|B
    C|B
    D|B
    E|F
    G|F

GENERATED TABLE
--------------------
A|B
B|A
C|B
B|C
D|B
B|D
A|C
C|A
A|D
D|A
C|D
D|C
E|F
F|E
G|F
F|G
E|G
G|E

希望我能够解释我的问题。

由于

2 个答案:

答案 0 :(得分:0)

我真的不明白你的问题?

要从select语句创建新表,可以使用

SELECT *
INTO CORRELATED
FROM CODES

这是你的意思吗?

答案 1 :(得分:0)

阻止行加入自身的自联接

   select c1.code,c2.code
    from codes c1 join codes c2
    on c1.key = c2.key and c1.code != c2.code

应该返回

A|C
A|D
C|A
C|D
D|A
D|C
E|G
G|E

工作,但它不会返回您在代码表中需要行B|BF|F的B和F配对

或者,您可以将结果与基表联合起来:

select c1.code as code1,c2.code as code2
from codes c1 join codes c2
on c1.key = c2.key and c1.code != c2.code
union
select code as code1,key as code2 
from codes
union
select key as code1,codes as code2
from codes

应该返回

Code1|Code2
    A|C
    C|A
    A|D
    D|A
    C|D
    D|C
    E|G
    G|E
    A|B
    C|B
    D|B
    E|F
    G|F
    B|A
    B|C
    B|D
    F|E
    F|G