【发布时间】:2012-11-02 13:26:31
【问题描述】:
给定表:
create table Person( Name varchar(100) )
其中名称对所有人员都是唯一的
什么 SQL 查询可以生成所有可能的 n!/((n-2)!2!) 个循环组合?
假设Person的基数总是等于4
示例人物 = {'Anna','Jerome','Patrick','Michael')
输出:
Anna, Jerome
Anna, Patrick
Anna, Michael
Jerome, Patrick
Jerome, Michael
Patrick, Michael
任何帮助将不胜感激。谢谢!
这是我的答案(我使用了 oracle SQL):
select P1.NAME PERSON1, P2.NAME PERSON2
from (select rownum RNUM, NAME
from PERSON) P1,
(select rownum RNUM, NAME
from PERSON) P2
where P1.RNUM < P2.RNUM
【问题讨论】:
-
两个名称不相等的表实例的简单连接。但是,这会导致比正确解决方案多两倍的行,例如Anna,Michael 和 Michael,Anna(不正确)
标签: sql oracle combinations round-robin