sql - 有一个名为...的列无法从这部分查询子查询中引用

标签 sql postgresql sql-insert

 WITH upt as (
 UPDATE backend."orders" SET "statusId" = 5
 WHERE "userId" IN (177962,88265) and "statusId" IN (0,1,2,3,4) RETURNING *
)
 INSERT INTO __test_result(orderid) VALUES ((SELECT orderid FROM upt))

需要更新和记录数据,得到这个错误

ERROR: column "orderid" does not exist Hint: There is a column named 
"orderid" in table "__test_result", but it cannot be referenced from this part of the query.

我怎样才能在表中插入所有“upt”行?它必须看起来

"upt.orderid","jsonb for that orderid"

对于每个订单,jsonb 必须从具有相同 orderid 的“upt”列创建

最佳答案

如果你想使用 select 作为插入(多行)的来源,不要使用 values 子句,直接使用 select:插入 .. 选择 ...

所以在你的情况下:

WITH upt as (
  UPDATE backend."orders" 
     SET "statusId" = 5
  WHERE "userId" IN (177962,88265) 
    and "statusId" IN (0,1,2,3,4) 
  RETURNING *
)
INSERT INTO __test_result(orderid) 
SELECT orderid 
FROM upt;

关于sql - 有一个名为...的列无法从这部分查询子查询中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739033/

相关文章:

ruby-on-rails - 将 JSON 导入 Heroku Rails 应用程序然后存储在数据库中

php - 条目未出现在 phpMyAdmin 中

SQL数据库查询基本题

sql - 查找过去12小时的oracle记录

mysql - SQL 数据库帮助 - MySQL Workbench

php - MySQL - 在插入中选择

mysql - 对于我在特定表中尝试的每个 INSERT 查询,键 'PRIMARY' 的重复条目

mysql - 如何通过分组改进查询?

entity-framework - 到 Postgres 的连接字符串

postgresql - 如何在复合类型的 Postgres 数组中存储双引号?