在 SQL Server 中使用 TOP (1) 获取列中字符串出现次数最多的次数

本文关键字:字符串 Server SQL TOP 获取 | 更新日期: 2023-09-27 18:30:53

我有两列:

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

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

这是在SQL Server 2008和C#中

在 SQL Server 中使用 TOP (1) 获取列中字符串出现次数最多的次数

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

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

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

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();

SQL:

SELECT top 1 Name
FROM Records
GROUP BY Name
ORDER BY Count(*) desc --, Name   --in case of ties

如果您使用的是 LINQ,则可以执行以下操作:

var topName = MyDataContext.MyTable
  .OrderByDescending( x => x.Index )
  .Take( 1 )
  .Select( x => x.Name );