如果在sql postgresql中存在,如何使用

Posted

技术标签:

【中文标题】如果在sql postgresql中存在,如何使用【英文标题】:how to use if exists in sql postgres sql 【发布时间】:2018-07-13 16:05:37 【问题描述】:

我可以在 Postgres 中使用 IF 存在吗?

类似的东西

if exits(select* from a)
then (select * from b)
else 
(select * from c)

我遇到了错误。正确的使用方法是什么?

【问题讨论】:

SQL 中没有IF 【参考方案1】:

您可以使用它,但不能以这种风格使用(看起来像 MS 风格)。 IF 提供程序语言 plpgsql。仅在 SQL 语言中是不可能的。

【讨论】:

【参考方案2】:

在纯 SQL 中没有IF,但您可以将查询的两部分与UNION ALL 结合起来:


select ...
from b
where EXISTS ( select *
        from a
        where...
        )
UNION ALL
select ...
from c
where NOT EXISTS ( select *
        from a
        where...
        )
     ;

【讨论】:

【参考方案3】:

您可以简单地在表之间使用 LEFT JOIN。

SELECT * FROM A 
LEFT JOIN B ON ....
LEFT JOIN C ON ....

这样,如果它存在于 B 中,那么您将在同一行得到答案。 如果 B 中不存在,而在 C 中,你也会从 C 中获取同一行的数据。

【讨论】:

以上是关于如果在sql postgresql中存在,如何使用的主要内容,如果未能解决你的问题,请参考以下文章

sql 如果不存在,PostgreSQL重命名列

SQLAlchemy - 在 postgresql 中执行批量 upsert(如果存在,更新,否则插入)

sql 如果存在活动连接,则删除PostgreSQL数据库

PostgreSQL:如果不存在则创建表 AS

Sql开发人员连接到远程postgresql

Postgresql插入如果不存在