如何在SELECT语句中使用postgres变量?

时间:2019-05-17 20:50:23

标签: sql postgresql select

我正在将一个值存储在变量featureId中,然后尝试在SELECT语句中使用该值,但是postgres似乎正好采用了该名称,并正在寻找一个名为“ featureid”的列。我收到错误消息“ ERROR:列“ featureid”不存在 第4行:featureId,“

我的代码如下。如何在SELECT语句中使用变量的值?

SELECT id INTO featureId FROM tableA WHERE NAME = 'some value';

INSERT INTO tableB (client_id, feature_id, does_have)
  SELECT
  id,
  featureId,
  TRUE
FROM tableA

2 个答案:

答案 0 :(得分:1)

没有声明的变量,您的select partition_name from user_ind_partitions where index_name = 'Index_name' SELECT INTO that creates a table的版本。要亲自观看,请尝试:

SELECT INTO

为将值分配给变量,必须声明该变量。您可以使用匿名SELECT id INTO featureid FROM tablea WHERE name = 'some value'; SELECT * FROM featureid; 块。

DO

答案 1 :(得分:0)

您尝试执行的操作几乎没有错误:

  • sql是声明性语言,因此您要问该怎么做,因此,您无法存储变量,因此应在其中使用一些声明(如clarify和begin-end)触发,而不是简单的查询。
  • 您要执行两个语句: select insert ,它们会依次执行,因此不能再次存储变量。
  • 插入,插入一条记录,但是可能您正试图使用​​select语句(如果NAME不是唯一的)来检索更多数据

如果“ some-value”是一个已知常量,并且NAME是唯一的,只需将该值插入insert的where子句中即可。如果您想插入更多数据,请查看Postgres的批量插入语法:bulk insert