我想知道是否有人可以帮助我正在尝试编写的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多条记录的表,这在内存使用方面效率不高!
非常感谢您提供任何帮助......
答案 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;