我想基于查询结果创建一个变量,然后在IF语句中使用它。到目前为止,我已经知道了:
with variable as (select "Id" from public.tableName where "OtherId" = 24)
if variable notnull then
insert into public.tableName ("OtherName", "OtherPhoneNumber", "OtherAddress", "Id")
overriding system values
values ('foo', '205-123-4567', '123 Sample Ln', variable)
end if
Postgres给我一个错误,内容为:
SQL错误[42601]:错误:“如果”或附近的语法错误
我在做什么错了?
**** edit:ID不是主键,因为存在另一个名为TableNameId ****的主键
答案 0 :(得分:1)
如果要检查一个表中是否存在给定的ID并插入另一表(如果存在匹配项),则可以使用insert ... select
语法,如下所示:
insert into public.tableName2 ("OtherName", "OtherPhoneNumber", "OtherAddress", "Id")
select 'foo', '205-123-4567', '123 Sample Ln', "Id"
from public.tableName1
where "Id" = 24