限制OleDbDataAdapter查询中的行数

时间:2010-07-01 19:36:50

标签: c# sql oledb

我正在使用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 个答案:

答案 0 :(得分:1)

根据我的评论,答案取决于后端数据库

对于SQL Server,您将使用TOP

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

对于Oracle,您需要在where子句中使用ROWNUM来查询子选择。像这样(未经测试)

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

依此类推,取决于您的后端数据库。