![](/img/trans.png)
[英]Select pairs of values based on condition in other column - 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_B
或Table_C
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.