4

我在一个表中有三列:id、streetname、count。对某些 id 来说,分配的街道名称不止一个。Count 告诉我们多长时间将相应的街道分配给 id。我怎样才能得到数量最多的 id 和 streetname。

示例表:

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

结果应该是这样的:

id     streetname
1      street1
2      street4

提前致谢!

4

3 回答 3

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。请注意,您必须count使用 MySQL 的反引号或数据库用来转义保留字的任何字符来转义列名。我的建议是避免对列名和表名使用保留字。

于 2013-08-27T15:19:41.343 回答
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 小提琴演示

于 2013-08-27T15:21:55.107 回答
0

我不认为没有唯一的列名“id”是正确的方法,但你的问题应该已经通过这个查询解决了:

SELECT id, streetname FROM table ORDER BY count DESC
于 2013-08-27T15:19:20.937 回答