我正在尝试在Postgres中做这样的事情:

问题描述 投票:0回答:2

  • INSERT INTO table1 (col1, col2) VALUES (SELECT col1, col2 FROM othertable)

  • 但是,即使使用Postgres 9.0,也无法点1,如文档(

    Http://www.postgresql.org/docs/9.0/static/static/sql-update.html

    同点2似乎不起作用。我遇到以下错误:子查询必须仅返回一列。
  • 希望有人对我有解决方法。否则,查询将需要时间的时间:(。
FYI:我正在尝试从几个表中选择不同的列并将它们存储到临时表中,以便另一个应用程序可以轻松获取准备好的数据。

用于更新

使用:

UPDATE table1 SET col1 = othertable.col2, col2 = othertable.col3 FROM othertable WHERE othertable.col1 = 123;

对于插入

使用:

sql postgresql sql-update
2个回答
248
投票

如果您使用选择来填充插入值,则不需要

VALUES

语法。

MOMG小马的答案非常有效,但是如果您需要更复杂的东西,这里是一个稍微高级的更新查询的示例:

UPDATE table1 SET col1 = subquery.col2, col2 = subquery.col3 FROM ( SELECT t2.foo as col1, t3.bar as col2, t3.foobar as col3 FROM table2 t2 INNER JOIN table3 t3 ON t2.id = t3.t2_id WHERE t2.created_at > '2016-01-01' ) AS subquery WHERE table1.id = subquery.col1;

UPDATE table1 SET (col1, col2) = (col2, col3) FROM othertable WHERE othertable.col1 = 123;


始终最好先运行交易中的查询

41
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.