我正在编写一个程序,我需要对数据库进行查询,询问在给定列中最常出现的字符串。在这个例子中,它的“stringONE”。
----------------------------
| ID | Column (string) |
----------------------------
| 1 | stringONE |
----------------------------
| 2 | stringTWO |
----------------------------
| 3 | stringONE |
----------------------------
| 4 | stringONE |
----------------------------
现在我需要把出现次数最多的字符串的名字放到一个变量字符串中,例如:
string most_appeared_string = sql.ExecuteScalar();
此外,如果没有出现最多的字符串,而是出现相同次数的 2 个或更多字符串,会发生什么情况,如下所示:
----------------------------
| ID | Column (string) |
----------------------------
| 1 | stringONE |
----------------------------
| 2 | stringTWO |
----------------------------
| 3 | stringTWO |
----------------------------
| 4 | stringONE |
----------------------------
提前谢谢。
@KeithS
您是否有查询的 sql-server 版本,因为我在那里尝试时遇到了一些错误。这是我想做的一个表格示例。
------------------------------------------------
| ID | column1 (string) | author (string) |
------------------------------------------------
| 1 | string-ONE | John |
------------------------------------------------
| 2 | string-TWO | John |
------------------------------------------------
| 3 | string-ONE | Martin |
------------------------------------------------
| 4 | string-ONE | John |
------------------------------------------------
SELECT TOP (1) column1, COUNT(*) FROM table WHERE author='John' ORDER BY ID
它应该返回“string-ONE”,因为它对作者 John 出现的次数最多 (2)。但是,在 MS-SQL Management Studio 中尝试查询时,这是我得到的错误:
Column 'table.column1' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
没关系编辑。谢谢你。