PostgreSQL-搜索丢失的组合



假设我们有两列,并且我们知道可能的值:

a = [1,2]
b = [1,2,3]

因此,所有组合的表格将是:

a, b
----
1, 1
1, 2
1, 3
2, 1
2, 2
2, 3

但是如果桌子没满怎么办?:

a, b
----
1, 1
--
--
--
2, 2
2, 3

如何查找丢失的组合?:

a, b
----
1, 2
1, 3
2, 1

附言:事实上,这张表相当大,它包含了1-2百万条记录
它包含其他值,不仅我们必须检查,这些值应该被忽略
实际上,没有必要得到所有丢失的组合
至少找一个就足够了。

您可以使用EXCEPT来获得该结果:

select t1.a, t2.b
from unnest(array[1,2]) as t1(a)
cross join unnest(array[1,2,3]) as t2(b)
except  
select a, b
from the_table
order by 1,2

第一部分生成所有可能的值,然后EXCEPT将返回第一个查询中的值,但不返回第二个(即表的内容(中的值

最新更新