SQL 查询以计算最多 "popular" 值?
SQL query to count most "popular" value?
这些是我的表格:
Table:人物
id---name
1----John
2----Mike
3----George
Table:访问次数
id---name---visitor
1----Paris--1
2----Paris--1
3----Paris--1
4----London-1
5----London-1
6----Tokyo--1
现在从这些表中我们可以读到一个名叫约翰(id 1)的人去过巴黎 3 次,伦敦 2 次,东京 1 次。现在我的问题是如何将其翻译成 SQL 和 select John 访问过的最受欢迎的地方的名称(结果是巴黎)?
看看聚合函数:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
SELECT name, count(name) AS visits
FROM visits
WHERE visitor = 1
GROUP BY name
ORDER BY visits DESC;
这将为您提供该访问者每个特定位置的访问次数,并将最受欢迎的结果排在最前面。
如果你只想要最受欢迎的,那么你可以限制结果:
SELECT name, count(name) AS visits
FROM visits
WHERE visitor = 1
GROUP BY name
ORDER BY visits DESC LIMIT 1;
这些是我的表格:
Table:人物
id---name
1----John
2----Mike
3----George
Table:访问次数
id---name---visitor
1----Paris--1
2----Paris--1
3----Paris--1
4----London-1
5----London-1
6----Tokyo--1
现在从这些表中我们可以读到一个名叫约翰(id 1)的人去过巴黎 3 次,伦敦 2 次,东京 1 次。现在我的问题是如何将其翻译成 SQL 和 select John 访问过的最受欢迎的地方的名称(结果是巴黎)?
看看聚合函数:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
SELECT name, count(name) AS visits
FROM visits
WHERE visitor = 1
GROUP BY name
ORDER BY visits DESC;
这将为您提供该访问者每个特定位置的访问次数,并将最受欢迎的结果排在最前面。
如果你只想要最受欢迎的,那么你可以限制结果:
SELECT name, count(name) AS visits
FROM visits
WHERE visitor = 1
GROUP BY name
ORDER BY visits DESC LIMIT 1;