如果行没有比日期更新的行,则选择仅比日期更早的行

时间:2014-12-27 23:26:39

标签: mysql

我有下表,我希望'修剪'在一周内没有获得积分的刻痕。我是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;

这是表格:

mysql> describe points_log;
+-------------------+-----------------------+------+-----+---------+----------------+
| Field             | Type                  | Null | Key | Default | Extra          |
+-------------------+-----------------------+------+-----+---------+----------------+
| id                | mediumint(8) unsigned | NO   | PRI | NULL    | auto_increment |
| nick              | char(25)              | NO   | PRI | NULL    |                |
| amount            | decimal(10,4)         | YES  | MUL | NULL    |                |
| stream_online     | tinyint(1)            | NO   | MUL | NULL    |                |
| modification_type | tinyint(3) unsigned   | NO   | MUL | NULL    |                |
| dt                | datetime              | NO   | PRI | NULL    |                |
+-------------------+-----------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

1 个答案:

答案 0 :(得分:1)

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

SELECT pl.nick
FROM points_log pl
GROUP BY pl.nick
HAVING MAX(pl.dt) < NOW() - INTERVAL 1 WEEK;

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