如何在Postgres中的if语句中声明变量并使用它

时间:2019-12-23 16:34:47

标签: postgresql

我想基于查询结果创建一个变量,然后在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 ****的主键

1 个答案:

答案 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