大概为:
pdate        pcount
2009-06-05   11
2009-06-05   21
2009-06-06   12
2009-06-06   32
2009-06-07   56
2009-06-07   26我想一条SQL取出今天、昨天、本月的数据不知可有办法?如今天浏览 82 昨天44 本月189

解决方案 »

  1.   

    你提供的例子并不准确,今天已经是 2009-06-13 了mysql> select * from tx;
    +------------+--------+
    | pdate      | pcount |
    +------------+--------+
    | 2009-06-05 |     11 |
    | 2009-06-05 |     21 |
    | 2009-06-06 |     12 |
    | 2009-06-06 |     32 |
    | 2009-06-07 |     56 |
    | 2009-06-07 |     26 |
    +------------+--------+
    6 rows in set (0.00 sec)mysql> select '今天',sum(pcount) from tx where pdate=CURDATE()
        -> union all
        -> select '昨天',sum(pcount) from tx where pdate=DATE_SUB(CURDATE(),INTERVAL 1 DAY)
        -> union all
        -> select '本月',sum(pcount) from tx where pdate>DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE())-1  DAY) ;
    +------+-------------+
    | 今天 | sum(pcount) |
    +------+-------------+
    | 今天 |        NULL |
    | 昨天 |        NULL |
    | 本月 |         158 |
    +------+-------------+
    3 rows in set (0.00 sec)mysql>
      

  2.   

    或者如下mysql> select sum(if(pdate=CURDATE(),pcount,0)) as '今天',
        ->  sum(if(pdate=DATE_SUB(CURDATE(),INTERVAL 1 DAY),pcount,0)) as '昨天',
        ->  sum(pcount) as '本月'
        -> from tx
        -> where pdate>DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE())-1  DAY) ;
    +------+------+------+
    | 今天 | 昨天 | 本月 |
    +------+------+------+
    |    0 |    0 |  158 |
    +------+------+------+
    1 row in set (0.00 sec)mysql>