3

我有一个 SQL 查询,例如:

SELECT blah
  FROM table
 WHERE field1 % functCall(otherField1, otherField2) = 0
    OR field2 % functCall(otherField1, otherField2) = 0
    OR field3 % functCall(otherField1, otherField2) = 0

有没有一种方法我只能调用一次functCall,在其他两个比较中重用它的结果?

谢谢!

4

3 回答 3

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
于 2010-12-21T21:26:49.483 回答
0

首先将函数的结果存储在变量中,然后在查询中使用它。

于 2010-12-21T21:26:49.280 回答
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
于 2010-12-21T21:35:55.737 回答