sql - 在 PostgreSQL 中的 SELECT SQL 语句中插入 SQL 语句

标签 sql 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 中遇到错误:

ERROR: Syntax error at or near "into"
LINE 1: ...from keyword_groups_list where group_id = (insert into 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 * 更喜欢它;

关于sql - 在 PostgreSQL 中的 SELECT SQL 语句中插入 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52227714/

相关文章:

mysql - 从其他两列计算 SQL 中的获胜百分比

mysql - 在 SQL 中水平拼接列

c# - SCOPE_IDENTITY 在 asp.net 中不起作用?

mysql - 从两个表中统计和选择数据

postgresql - Airflow CeleryExecutor 与 AWS SQS

sql - MERGE 违反 PRIMARY KEY 约束

sql - 如何优化 (TimescaleDB/PostgreSQL) 时间序列 SQL 查询

mysql - 如何将巨大的 MySQL 数据库迁移到 PostgreSQL 数据库

postgresql - Postgres,排序

Postgresql 错误类型 ""不存在