我一直在寻找答案,它似乎是确定的,但我想我会仔细检查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)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,告诉我我不能返回多个列.
如果我告诉它,它的工作原理SELECT x FROM x_table WHERE xid = a.
这是否可以在单个查询中完成,而不是创建单独的SELECT查询?
我正在使用PostgreSQL 8.3.
小智 13
试试这个.
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);
Run Code Online (Sandbox Code Playgroud)
在9.3类似的查询工作.
@corvinusz 的答案对于 8.3 来说是错误的,但给了我一个很好的想法,非常有效,谢谢!
INSERT INTO my_table VALUES (a, b, c)
RETURNING (SELECT x FROM x_table WHERE xid = a),
(SELECT y FROM y_table WHERE yid = b),
(SELECT z FROM z_table WHERE zid = c)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么问题中所述的方式无效,但至少这是有效的。
| 归档时间: |
|
| 查看次数: |
9984 次 |
| 最近记录: |