繁体   English   中英

如果另一个子查询返回true \\ false,则选择子查询

[英]Select sub query if another sub-query returns true\false

就像标题所暗示的那样,我正在努力实现这样的目标

SELECT 

(<sub query>) AS some_result,

some_other_result = CASE WHEN some_result > 0 THEN (<another super heavy subquery>) ELSE NULL END

FROM some_table

而输出将是这样的

+-----------------------------------------+
+    some_result  +     some_other_result +
+-----------------------------------------+
+       0         +           NULL        +
+-----------------------------------------+
+       6.7       +       3.182738998     +
+-----------------------------------------+

我想这样做是因为some_result不会经常发生,但是当这样做时,它会使查询速度变慢。

我有一个使用2个查询的备份计划,这将实现相同的目的,但是如果可能的话,我想避免这种方法。

谢谢

您只能在较高级别中使用some_result ,而不能在分配位置使用它。 就像是:

select 
       a.*, 
       some_other_result = 
                             CASE WHEN a.some_result > 0 THEN (<another super heavy 
subquery>) 
                             ELSE NULL END 
from 
           (SELECT 
           (<sub query>) AS some_result
           FROM some_table) a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM