MySQLselect在24小时内不需要得分轨道行的独特播放器

MySQLselect在24小时内不需要得分轨道行的独特播放器,mysql,Mysql,我的系统为每24小时从最后一首曲目开始跟踪其分数的每个玩家插入一个分数编号 我基本上是在曲目表中插入一个带有球员姓名、分数和当前时间戳的分数 我想选择至少24小时内未被跟踪的所有玩家 以下是我的尝试: `SELECT distinct player_name FROM tracks WHERE creation_date < DATE(NOW() - INTERVAL 1 DAY)`; `从创建日期

我的系统为每24小时从最后一首曲目开始跟踪其分数的每个玩家插入一个分数编号

我基本上是在
曲目
表中插入一个带有球员姓名、分数和当前时间戳的分数

我想选择至少24小时内未被跟踪的所有玩家

以下是我的尝试:

`SELECT distinct player_name FROM tracks WHERE creation_date < DATE(NOW() - INTERVAL 1 DAY)`;
`从创建日期<日期(现在()-间隔1天)`的曲目中选择不同的播放器名称;
但在所有情况下,这似乎都是对球员的回报,也许我对某些事情不是很了解


似乎我必须在select(选择)中运行select(选择),以选择最近的曲目,并检查其是否超过24小时?

您收到了不需要的播放器,因为可能有一些播放器的记录超过24小时,而记录较新,例如:

player_name | creation_date
------------+--------------
 'Foo'      | 1970-01-01     <-- WHERE creation_date < DATE(NOW() - INTERVAL 1 DAY) matches this
 'Foo'      | 2019-04-04     <-- Today
SELECT player_name
FROM tracks
GROUP BY player_name
HAVING MAX(creation_date) < DATE(NOW() - INTERVAL 1 DAY);
另一种方法是使用
按玩家名分组
以及
HAVING MAX…
子句,例如:

player_name | creation_date
------------+--------------
 'Foo'      | 1970-01-01     <-- WHERE creation_date < DATE(NOW() - INTERVAL 1 DAY) matches this
 'Foo'      | 2019-04-04     <-- Today
SELECT player_name
FROM tracks
GROUP BY player_name
HAVING MAX(creation_date) < DATE(NOW() - INTERVAL 1 DAY);

查询#1

SELECT DISTINCT player_name
FROM tracks
WHERE player_name NOT IN
(
    SELECT player_name
    FROM tracks 
    WHERE creation_date >= DATE(NOW() - INTERVAL 1 DAY)
);
输出

| player_name |
| ----------- |
| Bob         |
| player_name |
| ----------- |
| Bob         |

查询#2

SELECT player_name
FROM tracks
GROUP BY player_name
HAVING MAX(creation_date) < DATE(NOW() - INTERVAL 1 DAY);


创建日期