我有一张这样的表:
x | y | f
=========
0 | 1 | 3.4
1 | 2 | 3.5
表中仅存在某些x和y值。 PK是x,y。
我想展开它,以便所有 x和y值都存在。对于任何已存在的值,请保持f。对于新行,设置f = 0.因此,在上面,我们将添加(0,0,0.0), (1,0,0.0), (1,1,0.0)
等。
我认为这可以通过generate_range
的某种类型的JOIN来完成,但是我不知道如何只在原始表中没有记录的情况下才这样做。
答案 0 :(得分:1)
INSERT INTO t (x, y, f)
SELECT a.x, b.y, 0.0
FROM
generate_series(0, 1000000) a(x)
CROSS JOIN generate_series(0, 1000000) b(y)
LEFT JOIN t ON
t.x = a.x AND t.y = b.y
WHERE t.x IS NULL