標題不描述這個非常好多個項目的第一個實例,但假設在MySQL 5數據庫以下簡化表:如何確定表中
access
access_id | ip | date | browser
---------------------------------------------
int | char(40) | date | varchar(255)
如何找到最優確定第一次用戶的數量(通過IP忽略NAT路由和多個來自相同IP的訪問的人)以及他們的瀏覽器在日期範圍之間訪問該站點。即:
SELECT count(browser), browser
FROM access
WHERE date > '2011-11-1' AND date < '2011-12-1'
AND ip NOT IN (SELECT ip FROM access WHERE date < '2011-11-1')
GROUP BY browser
會給我所有誰2011年11月之前沒有看過該網站的IPS和瀏覽器爲用戶 - 但如果用戶訪問了該網站在十一月兩次會指望他們兩次,我只想要數一次。我想我可以用另一個醜陋的子查詢來解決這個問題,但是我正在尋找執行查詢的最佳方法,因爲表中有許多行。
索引我沒有在時刻訪問數據庫,但我相信你嘗試了SELECT DISTINCT(IP)和沒有工作? – codemonkey 2012-02-08 16:46:33
DISTINCT和GROUP BY是互斥的。 – 2012-02-08 17:04:33