cmd.CommandText = "SELECT RoomID FROM RoomQuantity A WHERE A.RoomID = (SELECT MAX(RoomID) FROM RoomQuantity)";
cmd.CommandText = "SELECT TOP 1 RoomID FROM RoomQuantity ORDER BY RoomID desc;";数据库表: RoomQuantity -列: RoomID - RoomID中的数据: R1 R2 R3 R4 R5 R6 R7 R8 R9 R10
问题-始终检索R9而不是R10
发布于 2011-08-27 20:09:42
如果RoomID不是数字数据类型(我假设数据是"R1"),则使用字母数字排序。
R9 > R1和R9 > R10
因为只比较字符串的开头(这里:2个字符)。
发布于 2011-08-27 20:14:18
字符串的排序顺序为R1 -> R10 -> R2。你还想要什么?
如果你想要一个数字排序,那么你需要这个
SELECT TOP 1 RoomID
FROM RoomQuantity
ORDER BY
CAST(REPLACE(RoomID, 'R', '') AS int) DESC如果您提供了很多行,那么不要期望很高的性能,因为RoomID上的索引将被忽略
其他选项:
中的计算索引列
发布于 2011-08-27 20:11:15
尝尝这个
select RoomID from RoomQuantity order by RoomID desc limit 1;https://stackoverflow.com/questions/7214406
复制相似问题