簡體   English   中英

Postgresql 根據條件選擇

[英]Postgresql select from based on condition

如何根據條件運行給定的選擇語句?

如果條件(來自 table_A)為真,則從 table_B 中選擇,否則從 table_C 中選擇。 表沒有公共列。

像這樣的東西

select case when table_A.flag=true then   
    (select * from table_B ) 
    else
    (select * from table_C ) 
    end
from table_A where ...

上面的當然會失敗: more than one row returned by a subquery used as an expression

由於列是相同的,您可以使用UNION 就像是:

SELECT *
FROM Table_B
WHERE (SELECT flag FROM Table_A) = true
UNION ALL
SELECT *
FROM Table_C
WHERE (SELECT flag FROM Table_A) <> true

我在這里假設Table_A只有一行,但您可以調整WHERE條件中的子查詢以獲取您需要的flag

基本思想是您設置兩個條件,以便一次只有一個條件為真(基於您的flag )。 因此,即使它是UNION ,也只有一部分查詢會返回結果,您最終會得到Table_BTable_C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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