如何在pl/sql中获取表的三列的组合?

Posted

技术标签:

【中文标题】如何在pl/sql中获取表的三列的组合?【英文标题】:how to get the combinations of three columns of a table in pl/sql? 【发布时间】:2013-06-22 07:55:28 【问题描述】:

我必须使用 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
........
 :  :  :
 :  :  :

等等。

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

【问题讨论】:

【参考方案1】:

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

SELECT *
  FROM (SELECT a FROM mytable),
       (SELECT b FROM mytable),
       (SELECT c FROM mytable);

【讨论】:

',' 附近的语法不正确。 @G.Ciardini:无法重现您的错误,刚刚检查过,对我有用

以上是关于如何在pl/sql中获取表的三列的组合?的主要内容,如果未能解决你的问题,请参考以下文章

如何从具有不同数量和索引顺序的三组字典中制作包含三列的条形图?

在 PL/SQL 中循环使用游标

PL SQL xmlelement:如何从同一张表的互斥条件中获取xml中的数据

如何使用PL / SQL更改您在FOR循环IN子句中查询的表

pl/sql:函数

如何在 PL/SQL 中创建两个表的记录类型?