2012-05-14 27 views
0

我有一個錶店活動 一個想從列表生成概述選擇總和(總)的基礎上的日期(unixtime)MySQL的選擇多組的多個地方

喜歡選擇SUM(總),其中日期123456789之間和2000000個 出頭這樣的..

,但我想獲得更多的日期範圍了一個查詢

有一個可列結果像

  • 總和今天

等等昨天

  • 總和(總)的2天(總)前
  • 總和(總)...

  • +0

    你可以聯合多個查詢在一起,如果有幫助。 – bumperbox

    回答

    1

    你不需要UNION。像這樣的東西應該工作:

    select SUM(total) as Total, 
        SUM(
         case when date >= DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 2 DAY) 
          and date < DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) then total end 
        ) TwoDaysAgoTotal, 
        SUM(
         case when date >= DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY) 
          and date < CONCAT(CURDATE(), ' 00:00:00') then total end 
        ) as OneDayAgoTotal, 
        SUM(
         case when date >= CONCAT(CURDATE(), ' 00:00:00') then total end 
        ) as TodayTotal 
    from list 
    where date between 123456789 and 2000000 
    
    0

    聯盟的聲明不解決你的情況? http://dev.mysql.com/doc/refman/4.1/pt/union.html

    +0

    聯合實際上它。但它真的很慢(在這一刻我用SUM()獲取16天的歷史記錄,並使用16個選擇...選擇日期(它在unixtime(不是sql date))..比聯盟快得多......但是這個真的很糟糕的代碼,我想性能來是因爲日期存儲爲整數而不是SQL日期 – Nullx8