这些是我的表格:
表:人物
id---name
1----John
2----Mike
3----George
表:访问次数
id---name---visitor
1----Paris--1
2----Paris--1
3----Paris--1
4----London-1
5----London-1
6----Tokyo--1
现在从这些表中我们可以看到一个名叫约翰(身份1)的人已经三次访问巴黎,两次访问伦敦,一次访问东京。现在我的问题是如何将其翻译成SQL并选择John访问过的最受欢迎的地方的名称(结果是巴黎)?
答案 0 :(得分:6)
看一下聚合函数: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;