2011-08-27 62 views
0
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 - 柱: - : R1 R2 R3 R4 R5 R6 R7 R8 R9在RoomID数据RoomID R10问题与来自SQL数据库

问题 - 始终检索R9而不是R10

+0

后,读取的行的代码。 – Bohemian

回答

1

如果RoomID不是数字数据类型(因为数据是“R1”),则使用字母数字排序。

R9> R1 和 R9> R10

因为只有串的开头相比较(这里:2个字符)。

0

试试这个

select RoomID from RoomQuantity order by RoomID desc limit 1; 
0

你必须填零数据,如果你希望找回人物喜欢他们的是数字。 R01 R02 R03 R04 R05 ... R10会给你你想要的结果。但是现在你已经走上了这条路,你可能会得出结论,应该重新考虑你的数据模型。

1

字符串的排列顺序为R1→R10→R2。你期望什么?

如果你想有一个数排序,那么你就需要这个

SELECT TOP 1 RoomID 
FROM RoomQuantity 
ORDER BY 
     CAST(REPLACE(RoomID, 'R', '') AS int) DESC 

,如果你给了很多行因为RoomID的索引将被忽略

其他不要指望伟大的表现选项:

  • 键盘的数字(按拉尔夫希林的答案)
  • 存储为int数里,并添加“R”在显示时(或者作为计算列)
  • 使用我CAST/REPLACE作为计算,索引列在表