我有一个SQL查询,如:
SELECT blah
FROM table
WHERE field1 % functCall(otherField1, otherField2) = 0
OR field2 % functCall(otherField1, otherField2) = 0
OR field3 % functCall(otherField1, otherField2) = 0
有没有办法我只能调用一次functCall,在其他两个比较中重复使用它?
谢谢!
答案 0 :(得分:2)
MySQL将自动优化您的查询,以便仅调用该函数一次,结果将被重用。
如果要避免重复的代码,可以在派生表中评估函数,然后查询。
SELECT blah
FROM
(
SELECT
blah, field1, field2, field3,
functCall(otherField1, otherField2) AS f
FROM your_table
) T1
WHERE field1 % f = 0
OR field2 % f = 0
OR field3 % f = 0
答案 1 :(得分:0)
首先将函数的结果存储在变量中,然后在查询中使用它。
答案 2 :(得分:0)
在from子句中使用子查询,然后检查外部查询中的条件:
SELECT blah
FROM
(select functCall(f1, f2) as fc, f1, f2, f3 from table) as t
WHERE f1 % fc = 0
OR f2 % fc = 0
OR f3 % fc = 0