簡體   English   中英

將兩個MYSQL查詢合並為一個查詢

[英]Combining two MYSQL Queries into a single one

我正在嘗試將兩個MYSQL查詢合並為一個。 我想做的是選擇每天添加的第一行和最后一行,然后從當天的第一列中減去該天的最后一列,然后輸出。 這將為我帶來當天那場比賽的XP凈收益。

以下是我的兩個查詢,它們的唯一區別是按DESC與ASC排序日期。 我要互相減去的數據庫中的列是“ xp”

$query = mysql_query("

                SELECT * FROM (SELECT  * FROM skills WHERE
                userID='$checkID' AND
                        skill = '$skill' AND
                        date >= ".$date."
                ORDER BY date DESC) as temp
                GROUP BY from_unixtime(date, '%Y%m%d')


                ");

                $query2 = mysql_query("

                SELECT * FROM (SELECT  * FROM skills WHERE
                userID='$checkID' AND
                        skill = '$skill' AND
                        date >= ".$date."
                ORDER BY date DESC) as temp
                GROUP BY from_unixtime(date, '%Y%m%d')


                "); 
SELECT FROM_UNIXTIME(date, '%Y%m%d') AS YYYYMMDD, MAX(xp)-MIN(xp) AS xp_gain
FROM skills
WHERE userID = '$checkID'
AND skill = '$skill'
AND date >= $date
GROUP BY YYYYMMDD

假設XP一直在增加,因此不需要使用時間來查找開始和結束值。

如果這不是正確的假設,那么您想要的是這樣的:

SELECT first.YYYYMMDD, last.xp - first.xp
FROM (subquery1) AS first
JOIN (subquery2) AS last
ON first.YYYYMMDD = last.YYYYMMDD

subquery1替換為返回每天第一行的查詢,將subquery2替換為返回每天最后一行的查詢。 您在問題中發布的查詢不會執行此操作,但是您可以找到許多SO問題,這些問題說明了如何獲得每個組的最高或最低行。

暫無
暫無

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

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