簡體   English   中英

在PostgreSQL中的SELECT SQL語句中插入INSERT SQL語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM