在 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#中
试试这个,它可能会给你你想要的东西。
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 );