Php MySQL函数:在子句中,查询运行两次
我已经编写了MySQL函数来检索数据库记录的总和Php MySQL函数:在子句中,查询运行两次,php,mysql,sql,Php,Mysql,Sql,我已经编写了MySQL函数来检索数据库记录的总和 SELECT id, myFunction(id) as price from myTable; 返回: +———————+————————+ | id | price | | 1 | 10 | | 2 | 20 | | 3 | 30 | | 4 | 40 | | 5 | 50 | +———————+————————+ 当我试图将结果的价格限制在20到40
SELECT id, myFunction(id) as price from myTable;
返回:
+———————+————————+
| id | price |
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
| 5 | 50 |
+———————+————————+
当我试图将结果的价格限制在20到40之间时,出现了一个问题
如果我在HAVING子句中这样做,这个函数将执行两次。第一次是在SelectMyFunction中检索时,第二次是在价格附近
例如:
SELECT id, myFunction(id) as price from myTable HAVING price BETWEEN 20 AND 40.
是否可以将此查询修改为一次性执行?由于计算复杂,所以最好运行两次相同的操作。使用SUM(id)函数而不是myFunction(id),因为毕竟您只是在计算id之和,请使用此查询
从myTable中选择id,SUM(id)作为价格,其中价格介于20和40之间
始终使用having with groupby子句。您可以尝试使用如下子查询“具体化”结果:
SELECT * FROM
(SELECT id, myFunction(id) AS price FROM myTable) t
WHERE price BETWEEN 20 AND 40
myFunction
到底做什么?如果您只是检索总和,那么为什么不使用sum()
而不是myFunction()
?您如何知道它被执行了两次?@user2269315,您基本上重复了我上面的评论。