簡體   English   中英

MySQL連接兩個表,其中兩個日期之間的日期

[英]MySQL join two tables where date between two dates

我有一個包含6列的表:id(PK,A_I),systemID(varchar(32)),total(varchar(32)),差異(varchar(16)),更新(datetime),錯誤(int )。 該表每小時更新一次,現在有超過200萬條記錄。 因此,我想將表拆分為一個僅包含今天值的表和一個包含歷史數據的表。 今天每天的午夜數據都會從今天的表格移至歷史數據。 到現在為止還挺好。

問題在於用戶可以選擇在日視圖,周視圖,月視圖和年視圖中查看差異值。 我不知道如何將今天的表與歷史的表連接起來,所以它們充當一個表。 目前,對周視圖的查詢是:

SELECT difference FROM productionlog 
WHERE systemID = '$id'
AND DATE(updated) BETWEEN '$weekStart' AND '$weekEnd'
ORDER BY updated

如何將“今天”表與歷史表連接起來並達到上述結果?

試試這個查詢,

SELECT difference FROM productionlog WHERE systemID = '$id' AND DATE(updated) BETWEEN '$weekStart' AND '$weekEnd'
UNION ALL
SELECT difference FROM productionlog_today WHERE systemID = '$id' AND DATE(updated) BETWEEN '$weekStart' AND '$weekEnd' ORDER BY updated

另請閱讀UNION

如上所述,您已經完成了並集,並且單獨的查詢按其自己的順序返回了結果。 您可以將整個查詢放在方括號中,然后對整體結果進行排序:

SELECT * FROM (
    (SELECT difference, updated FROM productionlog WHERE systemID = '$id' AND DATE(updated) BETWEEN '$weekStart' AND '$weekEnd')
UNION ALL
    (SELECT difference, updated FROM productionlog_today WHERE systemID = '$id' AND DATE(updated) BETWEEN '$weekStart' AND '$weekEnd' ORDER BY updated)
) as result

ORDER BY result.updated

暫無
暫無

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

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