求一SQL语句,高手请进。

江南小鱼 2010-01-11 02:32:28
表tb,有两列(ID、Name,其中ID自动增长)
ID int identity(1,1) not null
Name varchar(50) not null

对tb表进行多次插入、删除操作之后,实际最大ID比如说是18;但是此时表中数据最大ID是16,也就说ID=17的记录删除掉了。请问,有没有这样一条SQL语句,可以查询tb表此时ID列的实际最大值(18)。
...全文
214 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
感谢各位的回复
答案如下:

select ident_current(@tableName)--获取表标识列的最后生成的标识值

江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 gsz_stylm 的回复:]
select top 1 ID from tb order by ID desc
[/Quote]
哥们,你这个和
select max(ID) from tb
没什么区别
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 v_chensheng 的回复:]
LZ``我帮你试过了``就算你删除了你最后插入的记录, select  @@IDENTITY还是查询出最后插入的ID
[/Quote]
SCOPE_IDENTITY()函数以及全局变量@@IDENTITY,是用在存储过程中的。

select SCOPE_IDENTITY()

返回上面操作的数据表最后row的IDENTITY列的值

SELECT @@IDENTITY

返回上面操作最后一个表的最后row的IDENTITY列的值
你只有执行插入操作后,才返回此时最大的ID。
gsz_stylm 2010-01-11
  • 打赏
  • 举报
回复
select top 1 ID from tb order by ID desc
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 alifriend 的回复:]
SQL codeDBCC CHECKIDENT (表名, NORESEED)
[/Quote]
这个可以查看实际的ID值
我要在程序中使用,这条语句没有返回值。
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 v_chensheng 的回复:]
你既然ID是自动增长的,那说明最后一个插入的数据ID也是最大的咯``
[/Quote]
对tb表进行多次插入、删除操作之后,实际最大ID比如说是18;但是此时表中数据最大ID是16,也就说ID=17的记录删除掉了。此时显示的16并不是ID实际增长到的值,ID实际值是18.
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 lxxlql 的回复:]
max(id)就可以了
[/Quote]
select max(ID) from tb
你会查询出16
我要查询出实际最大ID,也就是此时标识列增长到多少了;要查询出18.

ID=17的记录被删除掉了,select max(ID) from tb 会得到此时的最大ID值16,
我怎么知道此时标识列ID增长到多大了,也就说我怎么查询出此时的实际最大ID值。
波导终结者 2010-01-11
  • 打赏
  • 举报
回复
DBCC CHECKIDENT (表名, NORESEED)
v_chensheng 2010-01-11
  • 打赏
  • 举报
回复
LZ``我帮你试过了``就算你删除了你最后插入的记录, select @@IDENTITY还是查询出最后插入的ID
v_chensheng 2010-01-11
  • 打赏
  • 举报
回复
你既然ID是自动增长的,那说明最后一个插入的数据ID也是最大的咯``
lxxlql 2010-01-11
  • 打赏
  • 举报
回复
max(id)就可以了
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 v_chensheng 的回复:]
试下这个吧  @@IDENTITY
可能有用吧``我也不确定``
[/Quote]
select SCOPE_IDENTITY()

返回上面操作的数据表最后row的IDENTITY列的值

SELECT @@IDENTITY

返回上面操作最后一个表的最后row的IDENTITY列的值

-----
SCOPE_IDENTITY()函数以及全局变量@@IDENTITY,是用在存储过程中的,而且使得到的是此时显示的ID值。针对我列举的实例,SCOPE_IDENTITY()函数以及全局变量@@IDENTITY会返回16.

我想知道的是有没有这样一条SQL语句查询出实际最大ID,而不是表中显示最大ID。
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aixuezi 的回复:]
SQL codeSELECT@@IDENTITY
[/Quote]

select SCOPE_IDENTITY()

返回上面操作的数据表最后row的IDENTITY列的值

SELECT @@IDENTITY

返回上面操作最后一个表的最后row的IDENTITY列的值

-----
SCOPE_IDENTITY()函数以及全局变量@@IDENTITY,是用在存储过程中的,而且使得到的是此时显示的ID值。针对我列举的实例,SCOPE_IDENTITY()函数以及全局变量@@IDENTITY会返回16.

我想知道的是有没有这样一条SQL语句查询出实际最大ID,而不是表中显示最大ID。
v_chensheng 2010-01-11
  • 打赏
  • 举报
回复
试下这个吧 @@IDENTITY
可能有用吧``我也不确定``
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xray2005 的回复:]
select MAX(ID) FROM tableName;


[/Quote]
这样查询出来的是表中显示的最大ID值
我想得到的是时间ID值,就是自动增长的ID此时增长到多大了。
平庸人生 2010-01-11
  • 打赏
  • 举报
回复
SELECT @@IDENTITY
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xray2005 的回复:]
select MAX(ID) FROM tableName;


[/Quote]
select max(ID) from tb
你会查询出16
我要查询出实际最大ID,也就是此时标识列增长到多少了;要查询出18.

ID=17的记录被删除掉了,select max(ID) from tb 会得到此时的最大ID值16,
我怎么知道此时标识列ID增长到多大了,也就说我怎么查询出此时的实际最大ID值。
xray2005 2010-01-11
  • 打赏
  • 举报
回复
select MAX(ID) FROM tableName;

江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sportboy2008 的回复:]
SELECT MAX(ID)
[/Quote]
select max(ID) from tb
你会查询出16
我要查询出实际最大ID,也就是此时标识列增长到多少了;要查询出18.
江南小鱼 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jerrylyj 的回复:]
max
[/Quote]
select max(ID) from tb
你会查询出16
我要查询出实际最大ID,也就是此时标识列增长到多少了;要查询出18.
加载更多回复(3)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧