C# C、 ASP.NET core | SqlException:关键字“TOP”附近的语法不正确
我在ASP.NET Core中尝试从我的小数据库中获取数据。 我想从我的表中随机选择2行,但我无法让它工作 我的数据库表: 我计算出错误是因为我的SqlCommand不正确,但我不知道如何使其正确 我的朋友:C# C、 ASP.NET core | SqlException:关键字“TOP”附近的语法不正确,c#,asp.net,sql-server,data-layers,C#,Asp.net,Sql Server,Data Layers,我在ASP.NET Core中尝试从我的小数据库中获取数据。 我想从我的表中随机选择2行,但我无法让它工作 我的数据库表: 我计算出错误是因为我的SqlCommand不正确,但我不知道如何使其正确 我的朋友: public IEnumerable<IKarakter> GetSortedKarakters() { using (SqlConnection connection = GetConnection()) { connection.Open()
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;
}
}
它显示数据库的前2条记录,这证明错误不是来自其他层的问题,唯一的问题是查询本身。您可以使用SELECT TOP 2*from Karakter ORDER BY ID 您可以使用按ID从卡拉克特订单中选择前2个* 正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
在该网站上找到它:正确的查询是:
SELECT TOP 2 *
FROM Karakter
ORDER BY NEWID();
在该网站上找到它:当我尝试此操作时,会出现以下错误:SqlException:关键字“BY”附近的语法不正确。当我尝试此操作时,会出现以下错误:SqlException:关键字“BY”附近的语法不正确。您为什么不在选择时查阅??它会清楚地表明1 LIMIT不是一个有效的T-SQL关键字,2正确的语法是SELECT TOP n……你为什么不在SELECT上查询一下呢??它会清楚地表明1 LIMIT不是有效的T-SQL关键字,2正确的语法是SELECT TOP n……在表列中找不到NEWID。在表列中找不到NEWID。