我想在PostgreSQL中将一个表的id插入到另一个表中。首先,我想选择table1的id,它等于特定值并将其存储到变量中。在MySQL中,我可以这样做:
SET @last_id_in = (SELECT id FROM table1 WHERE col1 = 1);
然后我可以插入值等于@last_id_in的位置。我怎样才能在PostgreSQL中做类似的事情?
答案 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
子句,因为没有中间步骤。