2014-02-11 3 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, вы должны использовать SqlCommand и SqlConnection объектов.

+4

+1 для обозначения класса 'SqlCommand', который фактически должен использоваться. – Houssni

3

LIMIT 1 работает в SQLite. Вместо этого используйте SELECT TOP 1, так как это должно быть сделано в T-SQL.
Вы также можете выбрать процент строк: SELECT TOP 10 PERCENT

0

в SQL Server: ВЫБРАТЬ TOP 1 * из таблицы;

и

в Oracle: выберите * от имени таблицы, где ROWNUM = 1;

Смежные вопросы