首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SQL数据库检索最后一行记录时出现问题

从SQL数据库检索最后一行记录时出现问题
EN

Stack Overflow用户
提问于 2011-08-27 20:02:28
回答 4查看 112关注 0票数 0
代码语言:javascript
运行
复制
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

EN

回答 4

Stack Overflow用户

发布于 2011-08-27 20:09:42

如果RoomID不是数字数据类型(我假设数据是"R1"),则使用字母数字排序。

R9 > R1和R9 > R10

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

票数 1
EN

Stack Overflow用户

发布于 2011-08-27 20:14:18

字符串的排序顺序为R1 -> R10 -> R2。你还想要什么?

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

代码语言:javascript
运行
复制
SELECT TOP 1 RoomID
FROM RoomQuantity
ORDER BY
      CAST(REPLACE(RoomID, 'R', '') AS int) DESC

如果您提供了很多行,那么不要期望很高的性能,因为RoomID上的索引将被忽略

其他选项:

  • 填充编号(根据拉尔夫·希灵顿的回答)
  • 将编号存储为int并在显示时添加'R‘(或作为计算列)
  • Use my CAST/REPLACE作为表

中的计算索引列

票数 1
EN

Stack Overflow用户

发布于 2011-08-27 20:11:15

尝尝这个

代码语言:javascript
运行
复制
select RoomID  from RoomQuantity order by RoomID  desc limit 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7214406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档