假设我们有一个如下表
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
两者都给出了错误的结果
答案 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 !!