如何获得最近十位访问者的不同结果,以及他们访问了多少次?
此:
SELECT DISTINCT all_ref FROM site_stats WHERE all_ref!='' ORDER BY id DESC LIMIT 10";
返回最近的十位访问者
all_ref
Chicago,IL
Chesapeake,VA
Austin,TX
San Jose,CA
Houston,TX
Newport News,VA
Sebastian,FL
Dublin,IE
Menlo Park,CA
Waves,NC
这将返回所有访客的计数:
SELECT all_ref,COUNT(*) AS ct FROM site_stats WHERE all_ref!=''
AND all_ref!=',' GROUP BY all_ref ORDER BY ct DESC,all_ref
这是我想让最近的10位访问者访问过多少次:
SELECT x.all_ref,x.ct
FROM (SELECT all_ref,COUNT(*) AS ct FROM site_stats WHERE all_ref!='' GROUP BY all_ref )
AS x LEFT JOIN site_stats AS f
ON f.all_ref=x.all_ref
ORDER BY f.id DESC LIMIT 10
它返回此值(返回的all_ref和ct值正确):
all_ref ct
Chicago,IL 26
Chicago,IL 26
Chesapeake,VA 18
Chesapeake,VA 18
Austin,TX 2
San Jose,CA 3
Houston,TX 1
Chicago,IL 26
但应返回类似以下的内容:
all_ref ct
Chicago,IL 26
Chesapeake,TX 2
San Jose,TX 1
Chicago,IL 26
Pittsburgh,PA 11
Richmond,VA 52
Waves,NC 24
Grandy,NC 9
让DISTINCT x.all_ref不能解决问题。
更新: 适用于我的解决方案:
SELECT x.all_ref,MAX(id) AS id,COUNT(*) AS ct
FROM site_stats
WHERE all_ref!='' GROUP BY all_ref )
AS x LEFT JOIN site_stats AS f
ON f.all_ref=x.all_ref
GROUP BY x.all_ref
ORDER BY x.id DESC LIMIT 10;