如何根據條件運行給定的選擇陳述句?
如果條件(來自 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
uj5u.com熱心網友回復:
由于列是相同的,您可以使用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)。因此,即使它是 a UNION,也只有一部分查詢會回傳結果,而您最終會得到Table_Bor Table_C。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478885.html
標籤:sql PostgreSQL
上一篇:洗掉通話在多對一關系中永久卡住
下一篇:使用回圈創建許多表單
