PHP MYSQL - 选择高分赢家

时间:2014-03-11 18:55:42

标签: php mysql

假设我们有一个如下表

   id   |   name   |  userid  |  score  |      date      |
   ------------------------------------------------------------
    1   |   john   |    1     |   44    |  2013-03-2 
    2   |   mary   |    2     |   59    |  2013-03-5  
    3   |   john   |    1     |   38    |  2013-03-8 
    4   |   elvis  |    3     |   19    |  2013-03-10 
    5   |   john   |    1     |   100   |  2013-03-11

我想选择上周的四名获胜者。周日从周日到周日。 我也想选择一个月的一名获胜者。

获胜者得分最高。

我将此代码用于每周获胜者

SELECT winner.id,winner.score FROM winner WHERE winner.date >= curdate() - INTERVAL DAYOFWEEK(curdate())+6 DAY
AND winner.date < curdate() - INTERVAL DAYOFWEEK(curdate())-1 DAY ORDER BY winner.score DESC
LIMIT 4

还是每月获奖者

SELECT winner.id,winner.score FROM winner WHERE  MONTH(CURDATE())= MONTH(winner.date) ORDER BY winner.score DESC
LIMIT 1

两者都给出了错误的结果

1 个答案:

答案 0 :(得分:0)

试试这个

 select id ,score  
 from winner
 where DATE_FORMAT(date, '%Y-%m-%d') between date_sub(DATE_FORMAT(now(), '%Y-%m-%d'),INTERVAL 1 WEEK) and DATE_FORMAT(now(), '%Y-%m-%d')
 ORDER BY score DESC
 LIMIT 4

 -------------------

 SELECT id,score FROM winner 
 WHERE  MONTH(CURDATE())= MONTH(date) 
 ORDER BY score DESC
 LIMIT 1

确保您的示例数据不起作用,因为它们是2013 !!

DEMO HERE

相关问题