伙计我正在使用OLEDB使用以下Command对数据库进行查询:
OleDbCommand maxCommand = new OleDbCommand("SELECT TOP 1 id AS maxId FROM `tableName` ORDER BY id DESC", AppConstants.OLEDBCONNECTION);
然后打印结果:
maxCommand.CommandType = CommandType.Text;
OleDbDataReader reader = maxCommand.ExecuteReader();
reader.Read();
Int64 maxId = Int64.Parse(reader["maxId"].ToString()) + 1;
问题是我尝试使用MAX()
和TOP 1
,但当我知道有超过10000 id
个值时,它们都会返回9999。
请帮助,如果您需要任何其他信息,请发表评论。
答案 0 :(得分:4)
id
列的数据类型不是int
。它可能是包含数字的varchar
列。对它进行排序时,它按词汇顺序排序,而不是数字。
要获得您期望的结果,可以将其投射到int
(它将无法使用索引搜索,因此效率不高)
select max(cast (id as int)) ...
如果可能,您应该将列类型更改为int
。