テーブル構造:
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件のレコードのみを取得するにはどうすればよいですか?
手伝ってくれてありがとう。