多数の結合を実行し、WHERE 句にいくつかの基準を持つクエリがあり、基本的に次のような結果になります。
| userId | date | otherData |
|--------+------------+------------|
| 1 | 2008-01-01 | different |
| 1 | 2009-01-01 | info |
| 1 | 2010-01-01 | for |
| 2 | 2008-01-01 | each |
| 3 | 2008-01-01 | row |
| 3 | 2009-01-01 | here |
したがって、本質的に各ユーザーには、過去に 1 つ以上の日付があり、未来には 0 つ以上の日付があります。
どういうわけか、データセットをユーザーごとに 1 行に減らし、最近渡された日付を持つ行のみを選択する必要があります。つまり、魔法GROUP BY
やHAVING
句が追加された場合、上記の結果は次のようになります。
| userId | date | otherData |
|--------+------------+------------|
| 1 | 2009-01-01 | info |
| 2 | 2008-01-01 | each |
| 3 | 2009-01-01 | here |