[英]PostgreSQL conditional 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中執行此操作。
試試這個:
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
如果table2和table3是聯合兼容的,那么你可以使用一個SELECT:
SELECT * FROM table2 WHERE NOT EXISTS(SELECT * FROM table1)
UNION
SELECT * FROM table3 WHERE EXISTS(SELECT * FROM table1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.