我可以使用Postgres中存在的IF吗?
类似这样的东西
if exits(select* from a)
then (select * from b)
else
(select * from c)
我遇到错误。正确的使用方式是什么?
答案 0 :(得分:1)
您可以使用它,但不能以这种样式使用(看起来像MS样式)。 IF
可用程序语言plpgsql。仅使用SQL语言是不可能的。
答案 1 :(得分:0)
您可以在表之间简单地使用LEFT JOIN。
SELECT * FROM A
LEFT JOIN B ON ....
LEFT JOIN C ON ....
这样,如果它存在于B中,那么您将在同一行上得到答案。 而且如果它不在B中而是存在于C中,那么您也将从同一行中的C中获取数据。
答案 2 :(得分:0)
在纯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...
)
;