Mysql SQL选择每日间隔之间的日期范围
我有一个数据库 它将每小时更新一次 我只想选择间隔1天的数据 前Mysql SQL选择每日间隔之间的日期范围,mysql,sql,select,Mysql,Sql,Select,我有一个数据库 它将每小时更新一次 我只想选择间隔1天的数据 前 星期一 星期二 星期三 我不想选择这些间隔之间的所有数据 Select * from highscores where ........... 我不知道该怎么做 Select * from highscores where ........... 我希望得到的结果是: id player_id total economy research military date (2017-09-07 (first record of
Select * from highscores where ...........
我不知道该怎么做
Select * from highscores where ...........
我希望得到的结果是:
id player_id total economy research military date (2017-09-07 (first record of that day)
id player_id total economy research military date (2017-09-08 (first record of that day)
id player_id total economy research military date (2017-09-09 (first record of that day)
id player_id total economy research military date (2017-09-10 (first record of that day)
id player_id total economy research military date (2017-09-11 (first record of that day)
.....
谢谢
这就是解决方案:
SELECT
h.id, h.player_id, h.total, h.economy, h.research, h.military, h.date
FROM
highscores h
WHERE
h.id = (SELECT hs.id
FROM highscores hs
WHERE UNIX_TIMESTAMP(DATE_FORMAT(h.date,"%Y-%m-%d 00:00:00")) = UNIX_TIMESTAMP(DATE_FORMAT(hs.date,"%Y-%m-%d 00:00:00"))
AND h.player_id = hs.player_id
ORDER BY date ASC
LIMIT 1)
您可能正在寻找子查询,不要使用
select*
SELECT h.id, h.player_id, h.total, h.economy, h.reasearch, h.military, h.date
FROM highscores h
WHERE h.id = (
SELECT hs.is FROM highscores hs
WHERE UNIX_TIMESTAMP(DATE_FORMAT(h.date,"%Y-%m-%d 00:00:00")) = UNIX_TIMESTAMP(DATE_FORMAT(hs.date,"%Y-%m-%d 00:00:00"))
AND h.player_id = hs.player_id
ORDER BY date ASC
LIMIT 1
)
通过子查询,您可以为每条记录选择一天的开始时间,按日期排序,最早的优先,因此只有在玩家匹配的情况下才从一天开始排序
将其限制为1,因为您只需要1个匹配项这里的大多数人需要格式化文本,而不是图像。(或者,更糟糕的是,链接到图像。)MySQL有
DAYOFWEEK()
和WEEKDAY()
函数。你能分享一下你想要得到的结果吗?这将使问题更容易理解添加几行示例表数据以及预期结果。都是格式化文本。我正在尝试这是我第一次在这里发布:)