使用UPDATE进行编号重排的处理示例.sql
2012-05-30 21:03
253 查看
--测试资料
CREATE TABLE tb(
ID1 char(2) NOT NULL,
ID2 char(4) NOT NULL,
col int,
PRIMARY KEY(ID1,ID2))
INSERT tb SELECT 'aa','0001',1
UNION ALL SELECT 'aa','0003',2
UNION ALL SELECT 'aa','0004',3
UNION ALL SELECT 'bb','0005',4
UNION ALL SELECT 'bb','0006',5
UNION ALL SELECT 'cc','0007',6
UNION ALL SELECT 'cc','0009',7
GO
--重排编号处理
DECLARE @ID1 char(2),@ID2 int
UPDATE tb SET
@ID2=CASE WHEN @ID1=ID1 THEN @ID2+1 ELSE 10001 END,
@ID1=ID1,ID2=RIGHT(@ID2,4)
SELECT * FROM tb
/*--结果
ID1 ID2 col
---- ---- -----------
aa 0001 1
aa 0002 2
aa 0003 3
bb 0001 4
bb 0002 5
cc 0001 6
cc 0002 7
--*/
CREATE TABLE tb(
ID1 char(2) NOT NULL,
ID2 char(4) NOT NULL,
col int,
PRIMARY KEY(ID1,ID2))
INSERT tb SELECT 'aa','0001',1
UNION ALL SELECT 'aa','0003',2
UNION ALL SELECT 'aa','0004',3
UNION ALL SELECT 'bb','0005',4
UNION ALL SELECT 'bb','0006',5
UNION ALL SELECT 'cc','0007',6
UNION ALL SELECT 'cc','0009',7
GO
--重排编号处理
DECLARE @ID1 char(2),@ID2 int
UPDATE tb SET
@ID2=CASE WHEN @ID1=ID1 THEN @ID2+1 ELSE 10001 END,
@ID1=ID1,ID2=RIGHT(@ID2,4)
SELECT * FROM tb
/*--结果
ID1 ID2 col
---- ---- -----------
aa 0001 1
aa 0002 2
aa 0003 3
bb 0001 4
bb 0002 5
cc 0001 6
cc 0002 7
--*/
相关文章推荐
- 使用子查询进行编号重排的处理示例.sql
- 使用临时表进行编号重排的处理示例.sql
- 如何使用Transact-SQL进行事务处理[示例]
- 【转】PL/SQL编辑数据"这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果"处理
- sql使用cast进行数据类型转换示例
- 使用编号表生成流水号的示例.sql
- 构造使用IN子句的动态Transact-SQL方法进行编号查询
- 在SQL Server 2005中使用Try…Catch块进行T-SQL错误处理
- 使用SQL语句来进行分页处理
- 树形数据深度排序处理示例(模拟单编号法).sql
- SqlPager最终版[附源码和示例程序](使用存储过程进行分页)
- 使用T-SQL进行数据库备份并检查该备份文件是否存在且作出相应处理
- 构造使用IN子句的动态Transact-SQL方法进行编号查询
- 使用SQL语句来进行分页处理
- 使用Try…Catch块进行T-SQL错误处理
- Transact-SQL 示例 - UPDATE中使用INNER JOIN
- 使用编号表按日期生成流水号的示例.sql
- 使用hibernate进行update和save的时候不成功,控制台也不报错,使用sql语句就能成功
- 返回已用编号、缺号分布字符串的处理示例.sql
- 构造使用IN子句的动态Transact-SQL方法进行编号查询