sql - 在postgresql中插入多列 "with"

标签 sql postgresql sql-insert common-table-expression

我的查询是这样的

WITH p AS (  select idA from TableA   )  
insert into TableB(idB,idA,city,data) 
   select  sp_get_id('TableB'),p.idA from p,'TO',now()

注意:sp_get_id('TableB')是一个生成id的存储过程。我执行上面的查询,它是错误的。

最佳答案

您尝试插入的项是简单的标量。您可以从 p 查询它们:

WITH p AS (SELECT idA FROM TableA)  
INSERT INTO TableB (idB, idA, city, data) 
SELECT sp_get_id('TableB'), idA, 'TO', NOW()
FROM   p

但是,坦率地说,我认为在这里使用 CTE 只会使事情复杂化(假设问题本身并不是对实际问题的简化):

INSERT INTO TableB (idB, idA, city, data) 
SELECT sp_get_id('TableB'), idA, 'TO', NOW()
FROM   TableA

关于sql - 在postgresql中插入多列 "with",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47757657/

相关文章:

python - 初始化几何类型的空列的合适值是多少

sql - 一列多列上的 array_agg

mysql - 项目特定 : PostgreSQL or MySQL need advice

mysql - 我的 MySQL 查询有什么问题?

sql - 如何获取Oracle SQL表中未使用/可用的主键(主键范围从1到999)的列表?

java - 我应该使用复合主键吗?

mysql - 具有相同列的两个重复索引

SQL 查询获取列中最常见的值

c# - 执行从 C# 到 MySQL 的 INSERT 语句的正确方法

mysql - 从 select 语句向表中插入值