[英]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.