我正在尝试将我的数据库结果限制为一个。
我到目前为止的代码是
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
,但这失败了。
有谁知道我应该使用什么。
答案 0 :(得分:5)
我已经尝试将LIMIT 1添加到查询的末尾,但这会失败。
您需要在SQL Server中使用SELECT TOP 1
。
LIMIT
适用于其他数据库,例如MySQL
,Postgres`
所以你的查询应该是:
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
个对象。
答案 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;