sql - 我如何调整此 SQL 以仅执行一次算术计算

标签 sql database tsql

假设我有这样的查询:

   select ((amount1 - amount2)/ amount1) as chg from t1
   where
        ((amount1 - amount2)/ amount1) > 1 OR
        ((amount1 - amount2)/ amount1) < 0.3

有没有一种方法可以只执行一次算术计算,而不是像上面的查询那样执行三次?

编辑:我不确定数据库是否会自动优化查询以仅执行一次此类计算?我在 Sybase 上使用 T-SQL。

最佳答案

从概念上讲,您可以从计算中选择,即:

select
    calc.amt
from
    (select (amt1 - amt2) / amt1 as amt from #tmp) calc
where
    calc.amt > 1 OR calc.amt < 0.3

不确定 SQL 是否会将您的代码优化为类似的代码 - 从基本临时表运行针对我的查询的查询似乎表明它们以相同的方式执行。

关于sql - 我如何调整此 SQL 以仅执行一次算术计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068087/

相关文章:

SQL:按连续日期计算记录数,即使某个日期没有记录

sql - 在 SELECT 查询中使用 TOP 1 的性能影响

sql - 为什么 json_value 返回 null?

sql - 从 SQL/ORACLE 中日期类型的列中提取日期

sql - SQL 中多条件排序

mysql - SQL 搜索名称并按最佳匹配排序

c# - 如何在 C# .NET 中保存密码?

mysql - 是否可以将 MySQL 数据库置于单用户模式?

php - 使用 AJAX 从 SQL 数据库更新存储在 $_SESSION 数据中的用户配置文件

sql - Oracle 数据库连接字符串 PLSQL 兼容性