Mysql 仅当行没有比日期新的行时,才选择比日期早的行

Mysql 仅当行没有比日期新的行时,才选择比日期早的行,mysql,Mysql,我有下表,我想'修剪'出谁没有在1周内获得积分的刻痕。我是MySQL新手,不知道如何最好地选择这些行。非常感谢你的帮助 这里是我目前为止没有得到正确结果的地方。这样做的结果是在任何时候都能获得分数的尼克 SELECT * FROM points_log p1 INNER JOIN points_log p2 ON p1.nick = p2.nick AND p1.dt < NOW() - INTERVAL 1 WEEK WHERE p2.dt > NOW() - IN

我有下表,我想'修剪'出谁没有在1周内获得积分的刻痕。我是MySQL新手,不知道如何最好地选择这些行。非常感谢你的帮助

这里是我目前为止没有得到正确结果的地方。这样做的结果是在任何时候都能获得分数的尼克

SELECT * FROM points_log p1
    INNER JOIN points_log p2 ON p1.nick = p2.nick
    AND p1.dt < NOW() - INTERVAL 1 WEEK
WHERE p2.dt > NOW() - INTERVAL 1 WEEK LIMIT 10;

您可以使用聚合获得过去一周内得分的
nick
s:

SELECT pl.nick
FROM points_log pl
GROUP BY pl.nick
HAVING MAX(pl.dt) < NOW() - INTERVAL 1 WEEK;
选择pl.nick
从点_log pl
尼克教授分组
最大(pl.dt)

我不确定您想要什么作为最终输出,但这将返回过去一周得分的
nick
s。

如果今晚稍晚有时间,我将把它带回绘图板。很明显,我在某个地方漏掉了一个语法错误。这正如预期的那样起作用,但是我在寻找nick在上周没有得分的语法错误,所以我将运算符改为:
,这样可以找到与我的原始问题匹配的行。如果你可以编辑你的回答,我会接受这个作为答案。谢谢@前总督。我把“我想‘修剪’掉1周内没有得分的尼克”解释为你想保留那些在过去一周内得分的尼克。我想不出最好的方式来表达我的问题,如果你有一段时间没有使用这个数据库和整个项目,这会让人有点困惑。
SELECT pl.nick
FROM points_log pl
GROUP BY pl.nick
HAVING MAX(pl.dt) < NOW() - INTERVAL 1 WEEK;