Postgresql - 选择返回时插入

Posted

技术标签:

【中文标题】Postgresql - 选择返回时插入【英文标题】:Postgresql - Insert when select return something 【发布时间】:2017-06-21 09:33:26 【问题描述】:

是否可以运行选择查询,检查行是否存在,然后插入一些值?我想在一个查询中做到这一点。我想到了 SELECT .. CASE .. THEN,例如:

SELECT user_id, CASE when user_id > 0 then (INSERT INTO another_table ...) ELSE return 0 END 
FROM users WHERE user_id = 10 

现在我可以使用 2 个查询来做到这一点,首先执行 SELECT 和第二个 INSERT 值(如果第一个查询返回某些内容)。

谢谢!

【问题讨论】:

insert.. select vlaues where exists (your select qry) ?.. 【参考方案1】:

一般来说结构是:

INSERT INTO another_table 
SELECT value1,value2..etc
where exists (SELECT user_id FROM users WHERE user_id = 10)

或者在这种特殊情况下:

INSERT INTO another_table 
SELECT value1,value2..etc
FROM users WHERE user_id = 10

如果没有这样的用户,则不会选择任何行并因此插入

【讨论】:

你是老板!谢谢。

以上是关于Postgresql - 选择返回时插入的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 spring boot 和 postgresql 获取布尔值以进行插入

使用命令行参数运行 PostgreSQL .sql 文件

使用 sqlalchemy 连接到本地 postgresql

使用 Postgresql JDBC 时,将导致插入 0 行的 INSERT 语句

检查 postgresql 的返回查询中是不是存在值

Postgresql中的large object