0

テーブル構造:

CREATE TABLE Test(
  ID PRIMARY KEY AUTO_INCREMENT,
  UserID INT,
  URL VARCHAR(255),
  MyTime DATETIME
)engine=myisam;

サンプルデータ:

 ID      UserID        URL                MyTime
 1        555        /index         2013-04-01 16:43:21
 2        777        /user          2013-03-01 16:43:21
 3        555        /user          2013-03-01 13:00:00
 4        555        /panel         2013-03-01 16:00:00
 5        555        /panel         2013-03-03 15:00:00

/indexはホームページであるため、クエリは URL が /index ではないすべてのデータを選択することを想定しているため、無視する必要があります。また、選択するデータは、/indexデータを無視した最新の10レコードでなければなりません。また、最後の 10 レコードに該当する場合は同じ URL を無視する必要があります。つまり、同じユーザーが同じページに複数回アクセスした場合、そのうちの 1 つだけを選択してその制限 10に含める必要があります。これは、 ID 4を持つ/panelページを無視します

したがって、ユーザー555の望ましい出力は次のようになります。

 ID      UserID        URL                MyTime
 3        555        /user          2013-03-01 13:00:00
 5        555        /panel         2013-03-03 15:00:00

私の試み:

 SELECT *
 From Test
 WHERE URL NOT LIKE '%/index%' AND UserID = '555'
 ORDER BY MyTime DESC
 LIMIT 10

このクエリは過去10件のデータを選択しますが、重複したURLが含まれています。重複した URLを取り除き、一意の URL を持つ最新の10件のレコードのみを取得するにはどうすればよいですか?

手伝ってくれてありがとう。

4

1 に答える 1