PostgreSQL条件语句

时间:2015-06-15 10:51:22

标签: sql postgresql if-statement

我需要根据结果实现条件SELECT语句 另一个声明。我不想为此目的创建函数,而只是使用条件SELECT

我的失败方法如下所示:

DO
$do$
BEGIN
IF SELECT count(*) FROM table1 < 1 THEN
   SELECT * FROM table2;
   RETURN QUERY;

ELSE 
   SELECT * FROM table3;
   RETURN QUERY;
END IF;
END
$do$

我可以通过在PHP中检查查询结果来完成相同的结果 并基于此,执行另一个查询,但我想知道是否有可能只在PostgreSQL中执行此操作。

2 个答案:

答案 0 :(得分:2)

试试这个:

with c as (select count(*) cnt from table1)
select table2.* from table2, c where c.cnt < 1
union all
select table3.* from table3, c where c.cnt >= 1

答案 1 :(得分:2)

如果table2和table3是联合兼容的,那么你可以使用一个SELECT:

SELECT * FROM table2 WHERE NOT EXISTS(SELECT * FROM table1)
UNION
SELECT * FROM table3 WHERE EXISTS(SELECT * FROM table1);