如何在SQL查询中为方程式定义变量

问题描述 投票:0回答:1

我是SQL新手,我正在尝试查询在线数据库的子集。我知道我感兴趣的数据由使用两列的方程式限制,我想查询方程式。

如果每次要绑定计算时都重复计算,则查询有效,但我想通过将方程式另存为变量来节省执行时间。

这里是重复方程式的代码:

SELECT  *

FROM    online_database

WHERE   rnn < 8
AND     mol > 12
AND     1 + 0.5*rnn + 0.1*mol < 6
AND     1 + 0.5*rnn + 0.1*mol > 0.2

这里是我要执行的操作的近似值(这不起作用):

SELECT  *

FROM    online_database

WHERE   rnn < 8
AND     mol > 12
AND     (1 + 0.5*rnn + 0.1*mol) as eqt < 6
AND     eqt > 0.2

任何建议都将不胜感激!

sql naming-conventions query-performance
1个回答
1
投票

您可以创建一个计算列,

或应该创建一列并设置插入/更新触发器以计算值(这样,如果需要,您可以在结果中创建索引)

或使用带有公式值的列创建视图,

或创建公用表表达式,

with cte as (select *, 1 + 0.5*rnn + 0.1*mol as computed
from (values (0.01, -10), (0.5, 0.2), (10, 20) ) as V (mol, rnn))

select * from cte
where computed < 6
and computed > 0.2

或者以一种不太漂亮的方式,您可以使用外部应用

select *
from (values (0.01, -10), (0.5, 0.2), (10, 20) ) as V (mol, rnn)
outer apply (select (1 + 0.5*rnn + 0.1*mol) as computed_value) as calc
where calc.computed_value < 6
and calc.computed_value > 0.2

请参阅工作提琴带有外部应用和CTE样本

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=bf8f93681ca90fad4c585e23bcf3b463

© www.soinside.com 2019 - 2024. All rights reserved.