[英]INSERT SQL statement inside a SELECT SQL statement in PostgreSQL
有人可以告訴我為什么這行不通嗎?
select *
from keyword_groups_list
where group_id = (insert into keyword_groups_list(group_name, keyword_tool_id)
values('title', 86574551) returning group_id);
我在PostgreSQL中收到錯誤:
錯誤:“ into”或附近的語法錯誤
第1行:...來自keyword_groups_list,其中group_id =(插入到keywo ...
我不明白您為什么需要選擇。 只需使用returning *
即可獲取新插入的行的所有列:
insert into keyword_groups_list(group_name, keyword_tool_id)
values ('title', 86574551)
returning *;
話雖如此,但是如果您確實需要選擇,可以通過CTE進行:
with new_groups as (
insert into keyword_groups_list(group_name, keyword_tool_id)
values ('title', 86574551)
returning group_id
)
select *
from keyword_groups_list
where group_id in (select group_id from new_groups);
但是我想不到有什么理由比簡單的returning *
更喜歡它;
如果將其放入CTE,則可以訪問該值
看到這個SQL小提琴
with t as (
insert into mytable (id, val) values(1,'abc') returning id
)
select * from anotherTable where id in (select id from t)
Postgres INSERT文檔也有另一個類似的CTE示例。 搜索“返回”
或者只是簡化為
insert into mytable (id, val) values(1,'abc') returning *
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.