Sql 没有重复项的对组合在一起
我有一张桌子Sql 没有重复项的对组合在一起,sql,oracle,select,plsql,Sql,Oracle,Select,Plsql,我有一张桌子 ID GROUPID NAME == ======= ======== 1 100 A 2 100 B 3 200 C 4 200 D 5 300 E 6 100 F 我想创建一个表,其中包含一个组中的排列对,但第一个和第二个排列对都不相同,如下所示: PAIRID FIRST SECOND ====== ===== ====== 1 1 2
ID GROUPID NAME
== ======= ========
1 100 A
2 100 B
3 200 C
4 200 D
5 300 E
6 100 F
我想创建一个表,其中包含一个组中的排列对,但第一个和第二个排列对都不相同,如下所示:
PAIRID FIRST SECOND
====== ===== ======
1 1 2
2 1 6
3 2 1
4 2 6
5 3 4
6 4 3
7 6 1
8 6 2
如果可能的话,我想在PL/SQL或直接SQL插入中完成。我已经使用递归函数完成了这项操作。您可以自行加入表:
SELECT ROW_NUMBER() OVER (ORDER BY a.id, b.id) AS pairid,
a.id AS FIRST, b.id AS second
FROM mytable a
JOIN mytable b ON a.groupid = b.groupid AND a.id <> b.id
ORDER BY 1 ASC;
选择(按a.id、b.id排序)上方的行数()作为pairid,
a、 id为第一,b.id为第二
从我的表a
在a.groupid=b.groupid和a.id上连接mytable b
由1个ASC订购;
您可以自行加入表:
SELECT ROW_NUMBER() OVER (ORDER BY a.id, b.id) AS pairid,
a.id AS FIRST, b.id AS second
FROM mytable a
JOIN mytable b ON a.groupid = b.groupid AND a.id <> b.id
ORDER BY 1 ASC;
选择(按a.id、b.id排序)上方的行数()作为pairid,
a、 id为第一,b.id为第二
从我的表a
在a.groupid=b.groupid和a.id上连接mytable b
由1个ASC订购;
好的,所以列名不起作用,对吗?更正它就在那里,如果有任何讨论,我可以称它为“a”、“b”、“c”。好的,所以列名不起作用,对吗?更正它就在那里,如果有任何讨论,我可以称它为“a”、“b”、“c”。几乎在那里,但是,虽然OP没有明确地说出来,但看起来pairid是基于“按第一、第二顺序”分配的。因此,一个行\u NUMBER()
似乎是必要的。几乎就在那里,但是——虽然OP没有明确地说出来——看起来pairid是根据“按第一、第二顺序”分配的。因此,似乎需要一个行编号()。