sql - INSERT INTO ... RETURNING 多列 (PostgreSQL)

标签 sql postgresql

我四处寻找答案,它似乎是确定的,但我想我会仔细检查 Stack Overflow 社区:
这是我正在尝试做的事情:

INSERT INTO my_table VALUES (a, b, c)
RETURNING (SELECT x, y, z FROM x_table, y_table, z_table
WHERE xid = a AND yid = b AND zid = c)

我收到一条错误消息,告诉我不能返回超过一列。
如果我告诉它 SELECT x FROM x_table WHERE xid = a,它就会工作。

与创建单独的 SELECT 查询相比,这在单个查询中是否完全可行?

我正在使用 PostgreSQL 8.3。

最佳答案

试试这个。

with aaa as (
    INSERT INTO my_table VALUES(a, b, c)
    RETURNING a, b, c)
SELECT x, y, z FROM x_table, y_table, z_table
WHERE xid = (select a from aaa)
  AND yid = (select b from aaa)
  AND zid = (select c from aaa);

在 9.3 中类似的查询工作。

关于sql - INSERT INTO ... RETURNING 多列 (PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20508387/

相关文章:

SQL:内部联接 + 不存在

mysql - 使用子查询更新表

java - 使用 jdbctemplate (postgres) 选择更新不工作

java - 将 EnumType 传递给 Postgres 函数

sql - 对两个表进行采样后进行连接

php - 如何确定 PHP 中 SQLite 2 查询中受影响的行数

SQL - 计数有或没有子查询?

hibernate - 使用 JPA 和 PostgreSQL 9.0 分组

postgresql - Postgresql 中是否需要对复合主键的一部分进行索引?

.net - 多个连接到一个 mdf 文件