2014-02-11 79 views
2

我想限制我的數據庫結果爲一個。如何將數據庫結果限制爲一個?

我到目前爲止的代碼是

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到查詢的結束,而是失敗。

有誰知道我應該使用什麼。

回答

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對象。

+4

+1提到實際應該使用的'SqlCommand'類。 – Houssni

3

LIMIT 1SQLite中工作。改爲使用SELECT TOP 1,因爲它應該在T-SQL中完成。
您也可以選擇行的百分比:SELECT TOP 10 PERCENT

0

SQL服務器: SELECT TOP 1 * FROM表;

甲骨文: SELECT * FROM表名,其中的rownum = 1;