PostgreSQL:SET相当于MySQL

时间:2014-05-22 00:01:00

标签: mysql postgresql

我想在PostgreSQL中将一个表的id插入到另一个表中。首先,我想选择table1的id,它等于特定值并将其存储到变量中。在MySQL中,我可以这样做:

SET @last_id_in = (SELECT id FROM table1 WHERE col1 = 1);

然后我可以插入值等于@last_id_in的位置。我怎样才能在PostgreSQL中做类似的事情?

1 个答案:

答案 0 :(得分:2)

取决于您想要变量的位置 - 例如在PL/pgSQL function中,或者在您调用Postgres的脚本中...

PL/pgSQL,类似这样:

INSERT INTO table2
SELECT id FROM table
WHERE col1 = 1
RETURNING id INTO last_id_in;

其中 last_id_in 之前已声明为integer(或 id 类型)。

脚本:

INSERT INTO table2
SELECT id FROM table1
WHERE col1 = 1
RETURNING id;

然后,您与cursor进行交互的任何库中的Postgres应包含该值,供您在其他地方使用。

如果目标只是将一个表中的元素插入到另一个表中,那么上面的script版本可以省略RETURNING子句,因为没有中间步骤。