我有两列:
INDEX NAME
125 john
125 dave
125 dave
130 john
131 dave
我想只返回出现次数最多的名称。然后我想把字符串放入变量中。我可以用什么查询来实现这个目标?
这适用于SQL Server 2008和C#
答案 0 :(得分: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();
SQL:
SELECT top 1 Name
FROM Records
GROUP BY Name
ORDER BY Count(*) desc --, Name --in case of ties
答案 1 :(得分:2)
试试这个,它可能会给你你想要的东西。
SELECT TOP 1 name
FROM names_table
GROUP BY name
ORDER BY COUNT(1) DESC;
这与您最初尝试的类似。只需将count()移动到顺序,而不是选择列表。
答案 2 :(得分:0)
如果你正在使用LINQ,你可以按照以下方式进行:
var topName = MyDataContext.MyTable
.OrderByDescending( x => x.Index )
.Take( 1 )
.Select( x => x.Name );