我编写了MySQL函数,用于检索数据库记录的总和。
SELECT id, myFunction(id) as price from myTable;
返回:
+———————+————————+
| id | price |
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
| 5 | 50 |
+———————+————————+
当我尝试将结果限制在20和40之间时,会出现问题。
如果我在HAVING CLAUSE中执行此操作,此功能将执行两次。第一次在SELECT myFunction中检索,第二次在HAVING PRICE附近。
示例:
SELECT id, myFunction(id) as price from myTable HAVING price BETWEEN 20 AND 40.
是否可以将此查询修改为一次性执行?由于计算复杂,两次运行同样的操作是个坏主意。
答案 0 :(得分:2)
您可以尝试使用如下子查询“实现”结果:
SELECT * FROM
(SELECT id, myFunction(id) AS price FROM myTable) t
WHERE price BETWEEN 20 AND 40
答案 1 :(得分:0)
使用SUM(id)函数代替myFunction(id),因为毕竟你只是计算id的总和,使用这个查询
SELECT id,SUM(id)作为价格来自myTable WHERE价格BETWEEN 20和40,
始终使用with groupby子句。