我想在 postgres 中加入以下 2 个表:
table1 (
i1 character varying
, i2 character varying
, i3 character varying
)
table2 (
i4 character varying
, startorend character varying
, begin integer
, end character integer
)
table1 包含以下值:
p1 p2 p3
p4 p10 p6
p7 p8 p9
p99 p199 p299
table2 包含以下值:
p4 begin 1 12
p4 end 13 14
p7 begin 19 20
p1 end 21 22
现在我想加入 2 个表,以便遵守以下规则:
1.当table1.i1=table2.i4时,则 1a。如果有2行包含对应table2的begin和end, 然后选择 table2.begin 和 table2.end 分别来自 table2.i4 的开始和结束列。 1b。如果只有 1 行包含与 table2 对应的 begin 或 end, 然后假设并将默认值写入 end(9999) 和 begin(0)。
通过应用上述规则,我得到下表:
p4 1 14
p1 0(default) 22 (as it just contains end column in table 2, therefore 0(begin) as default is inserted)
p7 19 9999(default) (as it just contains begin column in table2, therefore 9999(end) as default is inserted)
我可以有效地加入表格,但我们有可能插入默认值吗?