创建多个列的每个可能组合

时间:2017-09-07 21:00:22

标签: postgresql

我想创建一个可以输出多列可能性的查询。输入如下。

Keyword 1|Keyword 2|Keyword 3
---------+---------+----------
shoes    |buy
gloves   |online
shirts   |

第二个假设输入将是以下

Keyword 1|Keyword 2|Keyword 3
---------+---------+----------
shoes    |buy      |shop
gloves   |online   
shirts   |

第一个结果如下     买鞋,     手套买,     衬衫买,     在线鞋,     在线手套,     衬衫在线,

第二个结果如下;     买鞋,     手套买,     衬衫买,     在线鞋,     在线手套,     在线衬衫,     鞋买店,     手套买店,     衬衫买店,     鞋网店,     手套网店,     衬衫在线商店

有没有办法编写一个可以在两种情况下都有效的查询?列数可能会更改为最多5个。

由于

1 个答案:

答案 0 :(得分:0)

在同一张桌子之间进行笛卡尔联接:

select t1.col, t2.col, t3.col
from tab t1, tab t2, tab t3

如果你想消除重复,你可以尝试这个技巧:

select t1.col, t2.col, t3.col
    from tab t1
join tab t2 on t1.col != t2.col
join tab t3 on t2.col != t3.col and t3.col != t1.col

您可以在此处阅读有关不同选项的信息:​​http://www.postgresqltutorial.com/postgresql-cross-join/