简体   繁体   中英

Assistance with complex MySQL query (using LIMIT ?)

I wonder if anyone could help with a MySQL query I am trying to write to return relevant results.

I have a big table of change log data, and I want to retrieve a number of record 'groups'. For example, in this case a group would be where two or more records are entered with the same timestamp.

Here is a sample table.

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

If I wanted the first two grouped sets, I could use LIMIT 0,2 but this would miss the third record. The ideal query would return three rows (as two rows have the same timestamp).

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

Currently I've been using PHP to process the entire table, which mostly works, but for a table of 1000+ records, this is not very efficient on memory usage!

Many thanks in advance for any help you can give...

Get the timestamps for the filtering using a join . For instance, the following would make sure that the second timestamp is in a completed group:

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

The following would get the first three groups, no matter what their size:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM