c# - C#、ASP.NET 核心 | SqlException:关键字“TOP”附近的语法不正确
问题描述
我在 ASP.NET Core 中尝试从我的小型数据库中获取数据。我想从我的表中选择 2 个随机行,但我无法让它工作。
我的数据库表:
我想出了错误,因为我SqlCommand
的不正确,但我不知道如何使它正确。
我的 DAL:
public IEnumerable<IKarakter> GetSortedKarakters()
{
using (SqlConnection connection = GetConnection())
{
connection.Open();
var command = new SqlCommand("SELECT * FROM Karakter ORDER BY RAND() LIMIT 2;", connection);
var reader = command.ExecuteReader();
var sortedKarakters = new List<IKarakter>();
while (reader.Read())
{
var karakter = new KarakterDTO
{
KarakterId = (int)reader["KarakterId"],
KarakterSoort = reader["KarakterSoort"]?.ToString(),
KarakterNaam = reader["KarakterNaam"]?.ToString()
};
sortedKarakters.Add(karakter);
}
return sortedKarakters;
}
}
我尝试过的查询:
SELECT * FROM Karatker ORDER BY RAND() LIMIT 10;
SELECT * FROM Karakter ORDER BY RAND() TOP 2;
SELECT * FROM Karakter TOP 2;
SELECT * FROM Karakter Limit 2;
SELECT TOP 2 * FROM Karakter ODER BY RAND();
SELECT TOP 2 FROM Karakter ODER BY RAND();
除了关键字之外,上述所有查询都会引发相同的错误。
任何人都可以帮忙吗?
编辑:当我尝试这个查询时:
SELECT TOP 2 *
FROM dbo.Karakter;
它显示了数据库的前 2 条记录,这证明错误不是其他层的问题,唯一的问题是查询本身。
解决方案
正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
推荐阅读
- sql - 从视图中提取的日期过滤不起作用
- javascript - Google auth - 允许用户切换帐户
- jquery - Select2 组选择。值 当鼠标悬停在值上时自动跳到顶部
- php - 列出所有项目并突出显示给定类别中的项目
- django - Django DJANGO_SETTINGS_MODULE 在 Cookiecutter 中变回 'config.settings.local'
- docker - 当我在 Dockerfile 中使用 root 用户时构建图像报告“需要是 root”
- ios - 领域:- 由于未捕获的异常“RLMException”而终止应用程序?
- css - 视频应触及盒子的顶部和底部
- firebase - Firestore 安全规则 - 获取集合时 {wildcard} 既不为空也不为空
- c - 将 2D 数组转换为 3D?