协助复杂的MySQL查询(使用LIMIT?)

时间:2013-09-12 18:55:01

标签: mysql sql limit

我想知道是否有人可以帮助我正在尝试编写的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多条记录的表,这在内存使用方面效率不高!

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

1 个答案:

答案 0 :(得分: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;