如何将数据库结果限制为一个?

时间:2014-02-11 17:46:24

标签: 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,但这失败了。

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

3 个答案:

答案 0 :(得分:5)

  

我已经尝试将LIMIT 1添加到查询的末尾,但这会失败。

您需要在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个对象。

答案 1 :(得分:3)

LIMIT 1适用于SQLite。请使用SELECT TOP 1,因为它应该在T-SQL中完成。
您还可以选择行的百分比:SELECT TOP 10 PERCENT

答案 2 :(得分:0)

SQL Server中: SELECT TOP 1 * from table;

Oracle中:从表名中选择*,其中rownum = 1;