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
答案 0 :(得分:1)
如果RoomID不是数字数据类型(我假设,因为数据是“R1”),则使用字母数字排序。
R9> R1 和 R9> R10
因为只比较字符串的开头(这里:2个字符)。
答案 1 :(得分:1)
字符串的排序顺序为R1 - > R10 - > R2。你有什么期望?
如果你想要一个数字排序,那么你需要这个
SELECT TOP 1 RoomID
FROM RoomQuantity
ORDER BY
CAST(REPLACE(RoomID, 'R', '') AS int) DESC
如果您提供大量行,请不要期望出色的性能,因为RoomID上的索引将被忽略
其他选择:
答案 2 :(得分:0)
试试这个
select RoomID from RoomQuantity order by RoomID desc limit 1;
答案 3 :(得分:0)
如果您希望检索喜欢其数字的字符,那么您必须将数据填零。 R01 R02 R03 R04 R05 ... R10会给你你想要的结果。但是,现在您已经走上了这条道路,您可能会得出结论,您的数据模型应该重新考虑。