我的数据库中有创建日期(格式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)上有一个索引,以便查询快速工作。

09-28 12:37
查看更多