我需要在下一个语句中使用sql中两个函数的计算值(' as'关键字)。我想使用它,因为在这种情况下计算时间减少了x2。
我有以下声明:
SELECT f1() as f_1, f2() as f_2, f_1 - f_2 as f1_minus_f2 FROM mytable
其中f1(),f2() - 一些函数
答案 0 :(得分:2)
1)你可以使用表达式本身(如果函数是确定性的):
SELECT f1() as f_1, f2() as f_2, f1() - f2() as f1_minus_f2
FROM mytable
2)使用子查询:
SELECT sub.f_1, sub.f_2, sub.f_1 - sub.f_2 as f1_minus_f2
FROM (
SELECT f1() as f_1, f2() as f_2
FROM mytable
) sub
您无法使用它的原因是all-at-once
规则:
" All-at-Once Operations"意味着所有表达式都相同 逻辑查询过程阶段在逻辑上同时进行评估。