小编Ada*_*dam的帖子

PostgreSQL在递归查询中找到所有可能的组合(排列)

输入是'n'长度的数组.我需要生成所有可能的数组元素组合,包括输入数组中元素较少的所有组合.

IN: j='{A, B, C ..}'
OUT: k='{A, AB, AC, ABC, ACB, B, BA, BC, BAC, BCA..}' 
Run Code Online (Sandbox Code Playgroud)

随着重复,所以AB BA...

我尝试过这样的事情:

WITH RECURSIVE t(i) AS (SELECT * FROM unnest('{A,B,C}'::text[])) 
,cte AS (
    SELECT i AS combo, i, 1 AS ct 
    FROM t 
  UNION ALL 
    SELECT cte.combo || t.i, t.i, ct + 1 
    FROM cte 
    JOIN t ON t.i > cte.i
) 
SELECT ARRAY(SELECT combo FROM cte ORDER BY ct, combo ) AS result;
Run Code Online (Sandbox Code Playgroud)

它产生的组合没有重复......所以我需要以某种方式修改它.

sql postgresql combinations

6
推荐指数
1
解决办法
2876
查看次数

标签 统计

combinations ×1

postgresql ×1

sql ×1