我的数据库中有创建日期(格式2014-07-08 11:25:29)和用户名的列。我想创建一个条件语句,该语句将显示上周未提交新记录的用户。我从来没有真正查询过我的数据库是否有不发生的行为。我怎样才能做到这一点?
最佳答案
SELECT username
FROM records
GROUP BY
username
HAVING MAX(date_created) < NOW() - INTERVAL 1 WEEK
但是,请注意,此查询不会返回尚未创建单个记录的用户。
如果有另一个表保存所有用户记录(包括那些在
records
中没有记录的用户),请使用此查询:SELECT u.username
FROM users u
WHERE NOT EXISTS
(
SELECT NULL
FROM records r
WHERE r.username = u.username
AND r.date_created >= NOW() - INTERVAL 1 WEEK
)
在这两种情况下,请确保您在
records (username, date_created)
上有一个索引,以便查询快速工作。