我在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/

10-12 00:55