簡體   English   中英

PostgreSQL條件語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM