2
date user_id page_id
2010-06-19 16:00:00 1 4
2010-06-19 16:00:00 3 4
2010-06-20 07:10:00 1 1
2010-06-20 12:00:10 1 2
2010-06-20 12:00:10 1 3
2010-06-20 13:05:00 2 1
2010-06-20 14:10:00 3 1
2010-06-21 17:00:00 2 1
我想寫一個查詢,將返回誰沒有在最後一天訪問那些用戶的最後PAGE_ID的表。
所以,我能找到誰沒有在最後一天訪問:
SELECT user_id, MAX(page_id)
FROM page_views GROUP BY user_id
HAVING MAX(date) < DATE_SUB(NOW(), INTERVAL 1 DAY);
但是,我怎麼能找到這些用戶最後一次查看的PAGE_ID?即我想知道哪個page_id對應MAX(date)的同一行中的值。在每個日期有多個頁面瀏覽的情況下,我可以選擇MAX(page_id)。
從上面的預期輸出應該是(如果NOW()返回2010-06-21 18:00:00):
user_id page_id
1 3
3 1
- USER_ID 1在2010-上次訪問過了一天前 06-20 12:00:10, MAX(page_id)爲3.
- user_id 2 last visited than less a day ago,so are ignored。
- USER_ID 3上次訪問 在一天前,他們最近 PAGE_ID爲1
我怎樣才能做到這一點?我只需要使用SQL。我正在使用一個MySQL衍生產品,它要求SELECT子句中的所有列都要在GROUP BY子句中聲明(它更符合標準)。
謝謝。
我不知道是否有可能有幾個PAGE_ID在同一時間同一USER_ID。 如果是的話,你可能需要添加分組到這個查詢 – burnall 2010-06-23 09:53:39
這很好,謝謝。我不知道你可以加入多列,並且我忘記了EXIST關鍵字。 – 2010-06-23 10:09:02