2

我必须使用 PL/SQL 找出数据库中表的三列的组合。例如,考虑以下抽象表(A、B、C 代表列名称,v1、v2、v3... 代表列值):

-+-----+-----+-----+-
-|  A  |  B  |  C  |-
-+-----+-----+-----+-
-|  v1 |  v2 |  v3 |-
-+-----+-----+-----+-
-|  v4 |  v5 |  v6 |-
-+-----+-----+-----+-
-|  :  |  :  |  :  |-
    :     :     :   

我的模块应该生成这三列 A、B、C 的每个组合,例如:

v1 v2 v3
v1 v2 v6
v1 v5 v3
v1 v5 v6
........
v4 v2 v3
v4 v2 v6
v4 v5 v3
v4 v5 v6
........
 :  :  :
 :  :  :

等等。

任何人都可以为这个过程提出最有效的算法吗?谢谢你。

4

1 回答 1

2

笛卡尔连接将产生您正在寻找的所有组合。由于所有三列都在同一个表中,因此您需要将表暂时拆分为三部分:

SELECT *
  FROM (SELECT a FROM mytable),
       (SELECT b FROM mytable),
       (SELECT c FROM mytable);
于 2013-06-22T09:47:46.580 回答