我正在动态生成如下所示的查询,该查询通过在自身上左连接(任意次数)来创建不同的规则组合,并避免具有某些相同属性的规则作为连接条件的一部分,例如
SELECT count(*)
FROM rules AS t1
LEFT JOIN rules AS t2
ON t1.id != t2.id
AND ...
LEFT JOIN rules AS t3
ON t1.id != t2.id AND t1.id != t3.id AND t2.id != t3.id
AND ...
我目前正在通过从连接的行中创建一个 id 数组然后按它们进行排序和分组来删除重复项:
SELECT sort(array[t1.id, t2.id, t3.id]) AS ids
...
GROUP BY ids
我想知道是否有更好的方法来删除重复的行,例如
t1.ID | t2.ID | t3.ID
---------------------
A | B | C
C | B | A
应该
t1.ID | t2.ID | t3.ID
---------------------
A | B | C
或者
t1.ID | t2.ID | t3.ID
---------------------
C | B | A
但不是两者兼而有之。
编辑:我想从行排列变为组合行。