我在php文件中有以下查询:
$query = "SELECT
a.aurl as al,
(a.lttotals
-
( SELECT b.lttotals
FROM stats b
WHERE ltdate='$newdate'
AND b.aurl=a.aurl
)
) as tt,
lttotals
FROM stats a
WHERE ltdate='$date'
ORDER BY lttotals DESC
LIMIT 20";
这是非常缓慢的,如果我改变了超过20 mysql的限制就消失了。;)
基本上,我需要做的是从一行的某些列中获取值,然后从另一行中减去它们。
有没有更好的方法来做我想做的事情,利用我现在拥有的,或者我应该重组我如何存储我的数据?
最佳答案
SELECT a.aurl AS a1,
a.lttotals
a.lttotals - b.lttotals
FROM stats a
JOIN stats b
ON b.aurl = a.aurl
AND b.ltdate = '$newdate'
WHERE a.ltdate = '$date'
ORDER BY
a.lttotals DESC
LIMIT 20
创建以下索引:
stats (ltdate, lttotals)
stats (ltdate, aurl)
为了让它快速工作。
关于php - 如何从同一mysql表的另一行中的值中减去一行中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6919473/