簡體   English   中英

如何從同一mysql表的另一行中的值中減去一行中的值

[英]How can I subtract the values in one row from the values in another row in the same mysql table

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

以便快速運行。

SELECT a.url AS al,
   (a.lttotals - b.lttotals) AS tt,
   a.lttotals
FROM stats a, stats b
WHERE a.ltdate='$date' AND b.ltdate='$newdate' AND a.url = b.url
ORDER BY a.lttotals DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM