在 node-postgres 中使用子查询作为值

using a subquery as a value in node-postgres

提问人:Sherif eldeeb 提问时间:10/25/2023 最后编辑:Sherif eldeeb 更新时间:10/25/2023 访问量:20

问:

我需要执行如下操作:

pg.query(`insert into tbl (field1, field2) values($1, $2)`, ["a", "(select id from another_table limit 1)"])

这会导致以下错误

error: invalid input syntax for type uuid: "(select id from another_table limit 1)"
PostgreSQL 节点-Postgres

评论

1赞 Frank Heikens 10/25/2023
子查询必须是查询的一部分,而不是 Node 代码的一部分。重写 VALUES 部分以使用 SELECT 可能更简洁: .这也修复了 SQL 中的另一个语法错误,即 前面的逗号。INSERT INTO tbl (field1, field2) SELECT $1, id FROM another_table LIMIT 1;, values(
0赞 Sherif eldeeb 10/25/2023
好的,里面的填充查询是什么样子的?@FrankHeikensnode-postgres
0赞 Sherif eldeeb 10/26/2023
由 INSERT INTO tbl (field1, field2) 值 ($1, $2) 求解 请注意,子查询不是由单个 quoyes 包装的pg.query(, ["'a'", "SELECT $1, id FROM another_table LIMIT 1"])

答:

1赞 Frank Heikens 10/25/2023 #1

重写 INSERT 以使用 SELECT:

pg.query(`INSERT INTO tbl (field1, field2) SELECT $1, id FROM another_table LIMIT 1;`, ["a"])

但是,没有 ORDER BY 的 LIMIT 是相当奇怪的,可能会导致意想不到的结果。