さまざまなアクティビティとのハッシュを含むアクティビティテーブルがあります(actorEntity|subjectEntity|activity-type)
ユーザーが数秒のうちにまったく同じアクティビティを2回実行する場合があります。つまり、データベース内にまったく同じデータを持つ2つの隣接する行が存在することになります。
一部のユースケースでは、重複するアクティビティを表示したくないため、現在、ハッシュに基づいてアプリケーション内の重複を除外します。唯一の問題は、これらのアクティビティもページングされる場合があることです。つまり、ページングを使用して、アプリケーションの結果セットからレコードを引き出すことができます。
DBレベルでページングを実行できるように、SQLでこれを実行する方法を探しています。
与えられたデータ:
id | message | from | hash
-------------------------------------
1 | hello | bryan | b-hello
2 | goodbye | bryan | b-goodbye
3 | goodbye | john | j-goodbye
4 | goodbye | john | j-goodbye
5 | hello | john | j-hello
6 | goodbye | john | j-goodbye
次の結果セットを取得したいと思います。
id | message | from | hash
-------------------------------------
1 | hello | bryan | b-hello
2 | goodbye | bryan | b-goodbye
4 | goodbye | john | j-goodbye
5 | hello | john | j-hello
6 | goodbye | john | j-goodbye
行3と4は同一ですが、隣接しているため、目的の結果セットには1つしか含まれていないことに注意してください。行6は同じハッシュでしたが、別の同一のハッシュに隣接していないため、結果に含める必要があります。
隣接する行のどれが同じであるため、結果に返されるかは関係ありません。
MySql5.5を使用しています。