SQL SELECT MAX COUNT

时间:2013-08-27 15:13:37

标签: sql select count max

我在表格中有三列:id,streetname,count。对某些ids来说,不止是一个街道名称。 Count表示将相应街道分配给id的频率。我怎样才能获得最高计数的id和街道名称。

示例表:

id     streetname     count
1      street1        80
1      street2        60
1      street3        5
2      street4        10
2      street5        6

结果应该是这样的:

id     streetname
1      street1
2      street4

提前致谢!

3 个答案:

答案 0 :(得分:7)

您没有指定正在使用的数据库,但您应该能够使用以下内容:

select t1.id, t1.streetname, t1.count
from yourtable t1
inner join
(
  select id, max(count) max_count
  from yourtable
  group by id
) t2
  on t1.id = t2.id
  and t1.count = t2.max_count

SQL Fiddle with Demo。请注意,您必须使用MySQL的反引号或数据库用于转义保留字的任何字符来转义count列名称。我的建议是避免对列名和表名使用保留字。

答案 1 :(得分:1)

试试这个

SELECT T1.id, T1.streetname FROM TableName T1
INNER JOIN 
(
SELECT id, MAX(count) maxcnt FROM TableName
GROUP BY id
) T2 
ON T1.id= T2.id AND T1.count = T2.maxcnt

SQL FIDDLE DEMO

答案 2 :(得分:0)

我认为这不是唯一的列名称'id'的正确方法,但您的问题应该已通过此查询解决:

SELECT id, streetname FROM table ORDER BY count DESC