我有游戏表。
id | team1 | team2 | score1 | score2 | date
1 Hawks Ducks 1 2 2016-12-02
2 Sharks Flyers 3 0 2016-12-02
3 Kings Oilers 1 3 2016-12-03
4 Leafs Stars 4 3 2016-12-03
5 Blues Jets 2 5 2016-12-04
.. .. .. .. .. ..
我需要至少玩 10 场比赛。我如何编写 MySQL 查询,如下所示:
SELECT * FROM games
WHERE date > NOW() - INTERVAL 1 DAY
AND date < NOW() + INTERVAL 1 DAY
如果查询结果少于10行,则
SELECT * FROM games
WHERE date > NOW() - INTERVAL 2 DAY
AND date < NOW() + INTERVAL 2 DAY
如果查询结果少于10行,则
SELECT * FROM games
WHERE date > NOW() - INTERVAL 3 DAY
AND date < NOW() + INTERVAL 3 DAY
等...
为什么会这样?有时一周没有比赛,有时每天都有很多比赛。
我只想在一个 MySQL 查询中编写它。
最佳答案
SELECT * , ABS(TIMESTAMPDIFF(DAY, date_of_game , NOW())) as 'diff_days'
FROM games
ORDER BY diff_days
LIMIT 10
我已重命名您的日期列,因为日期是 MySQL 中的保留字。
我创建了一个 sqlfiddle,您可以在其中检查代码的行为:
关于MySQL递归查询取决于结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40946020/