我在表格中有三列: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
提前致谢!
答案 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
答案 2 :(得分:0)
我认为这不是唯一的列名称'id'的正确方法,但您的问题应该已通过此查询解决:
SELECT id, streetname FROM table ORDER BY count DESC