2

我想知道是否有人可以帮助我尝试编写返回相关结果的 MySQL 查询。

我有一个更改日志数据的大表,我想检索一些记录“组”。例如,在这种情况下,一个组将是两个或多个具有相同时间戳的记录。

这是一个示例表。

==============================================
ID     DATA                         TIMESTAMP
==============================================
1      Some text                    1379000000
2      Something                    1379011111
3      More data                    1379011111
3      Interesting data             1379022222
3      Fascinating text             1379033333

如果我想要前两个分组集,我可以使用LIMIT 0,2,但这会错过第三个记录。理想的查询将返回三行(因为两行具有相同的时间戳)。

==============================================
ID     DATA                         TIMESTAMP
==============================================
1      Some text                    1379000000
2      Something                    1379011111
3      More data                    1379011111

目前我一直在使用 PHP 来处理整个表,这主要是可行的,但是对于 1000 多条记录的表,这在内存使用上并不是很有效!

非常感谢您提供的任何帮助...

4

1 回答 1

1

使用 . 获取过滤的时间戳join。例如,以下将确保第二个时间戳在一个完整的组中:

select t.*
from t join
     (select timestamp
      from t
      order by timestamp
      limit 2
     ) tt
     on t.timestamp = tt.timestamp;

以下将获得前三个组,无论它们的大小如何:

select t.*
from t join
     (select distinct timestamp
      from t
      order by timestamp
      limit 3
     ) tt
     on t.timestamp = tt.timestamp;
于 2013-09-12T18:58:27.173 回答