sql中自增列 id,删除其中一个 ,如何查找被删除的行??
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中自增列 id,删除其中一个 ,如何查找被删除的行??相关的知识,希望对你有一定的参考价值。
如:自增列 1、2、3、4、5、6、7;
删除 其中一个数 X
求查询呗删除数X的 值 求SQL语句
id int identity(1,1),
val int
);
INSERT INTO #test VALUES(101);
INSERT INTO #test VALUES(102);
INSERT INTO #test VALUES(103);
INSERT INTO #test VALUES(104);
INSERT INTO #test VALUES(105);
INSERT INTO #test VALUES(106);
INSERT INTO #test VALUES(107);
GO
SELECT * FROM #test
GO
id val
----------- -----------
1 101
2 102
3 103
4 104
5 105
6 106
7 107
(7 行受影响)
DELETE FROM #test WHERE id = 2;
DELETE FROM #test WHERE id = 5;
DELETE FROM #test WHERE id = 6;
GO
SELECT
M.number
FROM
#test t RIGHT JOIN master..spt_values M
ON (M.number = t.id)
WHERE
M.type='P'
AND M.number > 0
AND M.number <= (SELECT MAX(id) FROM #test)
AND t.id is null
GO
number
-----------
2
5
6
(3 行受影响) 参考技术B
假设表名为t
是sqlserver吧?
select min(id)-1 from(select row_number() over (order by id) rn,id from t) as tt
where rn<>id
替换一处表名
参考技术C 我觉得通过这一张表从效率上来讲比较难通过一条sql语句查询出来。常用的方式是通过一张辅助表。
create table b(id number);
insert into b values(1);
insert into b values(2);
insert into b values(3);
....
insert into b values(7);
commit;
select b.id,a.id from a left join b on a.id=b.id where a.id is null; 参考技术D
数据多的话用WHILE循环吧﹐下面代码用循环加LEFT JOIN来找出差异的ID
DECLARE @TB TABLE(ID INT IDENTITY(1,1),STRING VARCHAR(20))DECLARE @TEST TABLE(ID INT )
INSERT INTO @TB VALUES('1')
INSERT INTO @TB VALUES('2')
INSERT INTO @TB VALUES('3')
INSERT INTO @TB VALUES('4')
INSERT INTO @TB VALUES('5')
INSERT INTO @TB VALUES('6')
INSERT INTO @TB VALUES('7')
DELETE @TB WHERE ID=2
DELETE @TB WHERE ID=4
DECLARE @I INT
SET @I=1
WHILE @I<=7
BEGIN
INSERT INTO @TEST VALUES(@I)
SET @I=@I+1
END
SELECT A.ID FROM @TEST A LEFT JOIN @TB B ON A.ID=B.ID WHERE B.ID IS NULL
ID
-----------
2
4
(2 row(s) affected)
第5个回答 2013-07-05 写个函数或者存储过程,先查出自增列的最大值,然后用一个自增的循环,去判断列列中是否有该数字,没有就输出该数字。怎样清空SQL SERVER数据库,清空后让表的ID自增列从1开始??
数据库名:class
要清空的表名:课程表 学生表 选课表
求代码,多谢!!!
1.使用DBCC控制台命令:
dbcc checkident(表名,RESEED,0)
2.truncate table 也可将当前标识值清零
但当有外键等约束时,无法truncate表
可以先禁用外键约束来truncate表:
--禁用外键约束
exec sp_msforeachtable 'alter table ? nocheck constraint all'
--清空数据
truncate table 表名
--启用外键约束
exec sp_msforeachtable 'alter table ? check constraint all'
我常用 truncate table 进行数据表内数据的清空,同时将ID列重新开始计数!
truncate table 课程表
truncate table 学生表
truncate table 选课表 参考技术A
清空数据库用语句
drop database 数据库名;如果是清空表并让id自增列从1开始的话,需要按如下步骤:
1、清空表
truncate table 表名;2、删除ID列
3、新增ID列为自增字段
以上是关于sql中自增列 id,删除其中一个 ,如何查找被删除的行??的主要内容,如果未能解决你的问题,请参考以下文章