我有一個自定義的書寫分析系統正在運行,並且我正在嘗試編寫一個查詢,以返回登錄特定頁面的用戶作爲他們的第一次打擊。表的相關部分是設置正因爲如此,有一些簡單的數據:選擇第一個結果爲特定值的行
pageviews Table
+----+---------------------+----------+-------------+
| id | time_in | users_id | articles_id |
+----+---------------------+----------+-------------+
| 0 | 2013-08-15 00:00:00 | 0 | 0 |
| 1 | 2013-08-16 00:00:00 | 0 | 1 |
| 2 | 2013-08-17 00:00:00 | 1 | 1 |
| 3 | 2013-08-18 00:00:00 | 1 | 0 |
| 4 | 2013-08-19 00:00:00 | 1 | 1 |
| 5 | 2013-08-20 00:00:00 | 2 | 1 |
+----+---------------------+----------+-------------+
注:在我的數據庫ID字段實際使用的GUID,而不是整數在這個簡單的例子。
現在,如果我想看到誰讀文章1
作爲他們的第一擊,我希望我的查詢返回用戶1
和2
,但不0
,爲用戶0
看到文章0
作爲他們先打在網站上。相反,如果我想查看誰先閱讀文章0
,則查詢將僅返回用戶0
。
這裏是我的查詢迄今:
SELECT
*
FROM
pageviews
WHERE
articles_id = 1
GROUP BY
users_id
ORDER BY
time_in
但這返回誰讀過文章1
所有用戶不同的用戶ID,沒有過濾掉誰沒看出來他們的第一個結果的用戶。我覺得自己的方向與我的問題一致,所以我正在轉向你們。
在此先感謝。
完美答案... –
謝謝!我發現這篇文章(http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/)不僅肯定你的答案的功能,也是最佳的表現。 –
非常歡迎。我很高興我可以幫助:) – peterm