0

我有两列:

INDEX     NAME
 125      john
 125      dave
 125      dave
 130      john
 131      dave

我只想返回出现次数最多的名称。然后我想把字符串放入一个变量中。我可以使用什么查询来实现这一点?

这是使用 SQL Server 2008 和 C#

4

3 回答 3

2

LinqToSql:

string mostFrequentName = myDataContext.Records
  .GroupBy(x => x.Name)
  .OrderByDescending(g => g.Count())
  //.ThenBy(g => g.Key)  in case of ties, use this for consistent results
  .Select(g => g.Key)
  .FirstOrDefault();

数据:

SELECT top 1 Name
FROM Records
GROUP BY Name
ORDER BY Count(*) desc --, Name   --in case of ties
于 2012-04-12T01:04:29.450 回答
2

试试这个,它可能会给你你想要的东西。

SELECT TOP 1 name 
  FROM names_table 
 GROUP BY name
 ORDER BY COUNT(1) DESC;

这与您最初尝试的类似。只需将 count() 移动到 order by,而不是选择列表。

于 2012-04-12T01:08:07.130 回答
0

如果您使用的是 LINQ,则可以按如下方式进行:

var topName = MyDataContext.MyTable
  .OrderByDescending( x => x.Index )
  .Take( 1 )
  .Select( x => x.Name );
于 2012-04-12T01:01:05.690 回答