c# - 如何将数据库结果限制为只有一个?

标签 c# sql sql-server

<分区>

我试图将我的数据库结果限制为一个。

我目前的代码是

OleDbCommand com9 = new OleDbCommand("SELECT [Duration], [Flight_Date] FROM Flights WHERE [Claimed_By_ID] = ? AND [Flight_Date] <= ? AND [Flight_Date] >= ? ORDER BY [Duration] DESC", Program.DB_CONNECTION);
com9.Parameters.Add(new OleDbParameter("", p.ID));
com9.Parameters.Add(new OleDbParameter("", DateTime.Today));
com9.Parameters.Add(new OleDbParameter("", DateTime.Today.AddMonths(-6)));
OleDbDataReader dr9 = com9.ExecuteReader(); 

我曾尝试将 LIMIT 1 添加到查询的末尾,但失败了。

有谁知道我应该使用什么。

最佳答案

I have tried adding LIMIT 1 to the end of the query but this fails.

您需要在 SQL Server 中使用 SELECT TOP 1

LIMIT 适用于其他数据库,如 MySQL、Postgres`

参见:TOP (Transact-SQL)

所以你的查询应该是:

OleDbCommand com9 = new OleDbCommand(@"SELECT TOP 1 [Duration], [Flight_Date] FROM Flights 
                                        WHERE [Claimed_By_ID] = ? 
                                        AND [Flight_Date] <= ? 
                                        AND [Flight_Date] >= ? 
                                        ORDER BY [Duration] DESC", Program.DB_CONNECTION);

看起来您正在使用 SQL Server,您应该使用 SqlCommandSqlConnection 对象。

关于c# - 如何将数据库结果限制为只有一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709211/

相关文章:

c# - 是否可以在针对 4.7.1 的 WinForms 项目中使用 Path.GetRelativePath (.NET Core2)?

c# - 使用 EWS/以编程方式使用 Outlook 日记条目

c# - INNER JOIN 3 使用 LINQ 的数据表

c# - 当表没有主键时使用 DeleteAllOnSubmit

sql-server - 一张表中有多个父子树。从节点值中选择每棵树

c# - 我怎样才能在 C# 中获得高达 128 位小数的精度?

c# - WPF 数据网格样式错误 IDataErrorInfo

PHP - SQL - DELETE 查询不起作用

java - 当我给出时间戳参数时,出现 BadSqlGrammarException : PreparedStatementCallback; bad SQL grammar,

sql - SQL Server 中数据插入的存储过程与 DTS/SSIS