Postgresql
可以有條件地返回“選擇”子查詢嗎?
僅當條件匹配時,Postgres 是否可以返回列(來自子查詢)?
詢問:
SELECT (SELECT NOW()) AS FIRST, (SELECT NOW()) AS SECOND
輸出:
| first | second | |:-----------|------------:| | timestamp | timestamp |
我想要一些類似的東西:(虛擬碼)
IF (variable =! 'something') { SELECT FIRST, SECOND } ELSE { SELECT FIRST }
| first | |:-----------| | timestamp |
一般來說沒有。關係(表或查詢結果)由標題和一組元組組成。一旦聲明了標頭,所有元組都必須符合該聲明。也就是說,null 是所有類型的底部,因此您可以使用它來代替值:
SELECT FIRST, CASE WHEN variable <> 'something' then SECOND else NULL END
NULL 是 case 的預設值,因此可以縮短為:
SELECT FIRST, CASE WHEN variable <> 'something' then SECOND END
不,不可能。在開始執行查詢之前,數據庫必須知道查詢的列數——本質上是在它被解析和分析之後。-沒有名字的馬
語句輸出結構必須是確定性的。所以你想要的目標不是相關的。我認為有一些全球性的任務,你決定通過描述的技巧來解決它。這個解決方案可能是錯誤的。我建議您制定整個任務,而不是選擇解決它的方法。-秋名