[英]How to assign select into variable and use it in case statement
我在 postgres 中有查詢:
SELECT CASE WHEN (Select money from Bank) is not null THEN (Select money from Bank) ELSE -1 end;
有沒有可能不在 'THEN' 中重復這個子查詢? 我想做類似的事情:
SELECT CASE WHEN ((Select money from Bank) = MONEY) is not null THEN MONEY ELSE -1 end;
我需要在一個 Select 語句中執行此操作。
一種方法是使用coalesce()
:
SELECT COALESCE( (Select money from Bank), -1)
子查詢可能仍會運行兩次(由於COALESCE()
的語義)——我不確定 Postgres 如何優化它。
您可以通過將邏輯移至from
子句來解決此問題:
select coalesce(b.money, -1)
from (Select money from Bank) b
注意:如果Bank
為空,這將不會返回任何行。 不過,我的猜測是您已經簡化了查詢並且有更多條件。 如果bank
真的最多只有一行,那么您可以使用:
select coalesce(max(b.money), -1)
from bank b
如果這確實是一個更復雜的查詢,您可能需要橫向連接:
select . . ., coalesce(b.money, -1)
from . . . left join lateral
(Select money from Bank) b;
SELECT isnull( (從銀行選擇錢), -1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.