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

how to use if exists in sql postgres sql

我可以使用 IF exists in Postgres 吗?

像这样

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

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

可以用,但不是这个风格(貌似MS风格)。 IF 可用于过程语言 plpgsql。只是在 SQL 语言中是不可能的。

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

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

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

纯 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...
        )
     ;