使用子查询进行编号重排的处理示例.sql
生活随笔
收集整理的這篇文章主要介紹了
使用子查询进行编号重排的处理示例.sql
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
--測試資料
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 a SET ID2=RIGHT(10000
?? ?+(SELECT COUNT(*) FROM tb WHERE ID1=a.ID1 AND ID2<=a.ID2)
?? ?,4)
FROM tb a
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 a SET ID2=RIGHT(10000
?? ?+(SELECT COUNT(*) FROM tb WHERE ID1=a.ID1 AND ID2<=a.ID2)
?? ?,4)
FROM tb a
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
--*/
轉載于:https://www.cnblogs.com/shihao/archive/2012/05/30/2526898.html
總結
以上是生活随笔為你收集整理的使用子查询进行编号重排的处理示例.sql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeSql (二十五)延时加载
- 下一篇: 串口项目——Cseiralport类的应