Ограничение количества строк в запросе OleDbDataAdapter - PullRequest
1 голос
/ 01 июля 2010

Я использую C # и .NET 2.0. Я создал OleDbDataAdapter для импорта файла с разделителями табуляции и в SQL для одной из моих команд добавляю «LIMIT 1» в конец запроса.

string query = string.Format("SELECT DISTINCT * 
                                FROM {0} 
                              ORDER BY ZipCode 
                              LIMIT 1", tableName);

Я запускаю запрос, и моя программа выдает исключение System.Data.OleDb.OleDbException: синтаксическая ошибка (отсутствует оператор) в выражении запроса «ZipCode LIMIT 1».

Сейчас я только запускаю несколько тестов, но мне любопытно, почему это не работает или есть альтернативный способ ограничить количество возвращаемых строк. Я работаю с файлами, в которых есть десятки тысяч строк, и иногда может потребоваться ограничить количество возвращаемых строк.

1 Ответ

1 голос
/ 01 июля 2010

Согласно моему комментарию, ответ зависит от внутренней базы данных

. Для SQL Server вы должны использовать TOP

string query = string.Format("SELECT DISTINCT TOP 1 *  
                              FROM {0}  
                              ORDER BY ZipCode", tableName);

. Для Oracle вам необходимо использовать ROWNUM в предложении where, котороезапросы против суб-выбора.Примерно так (не проверено)

string query = string.Format("SELECT * FROM (SELECT DISTINCT *  
                              FROM {0}  
                              ORDER BY ZipCode) where ROWNUM = 1", tableName);

И так далее, в зависимости от вашей внутренней базы данных.

...