2011-08-27 67 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作爲計算,索引列在表