php - 如何从同一 mysql 表中的另一行中的值中减去一行中的值

标签 php mysql

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

相关文章:

php - 使用 cakephp 对连接表进行分页

mysql - 进入数据库需要特别注意的符号有哪些

php - 获取 php 变量以选择语句不起作用

php - 从 MySQL PDO 查询结果创建数组

php - FCKeditor 留下了很多打开的标签 - 如何删除它们

php - CDb命令 : reduce value of column itself

mysql - 根据mysql中的下一行选择行

php - 检查是否来自数组 PHP 的 friend

php - 使用 mysql 存储的安全 php session 处理

mysql - 抑制 MySQL 警告?