27,579
社区成员
发帖
与我相关
我的任务
分享
UPDATE TB SET NUM=
(
SELECT TOP 1 NUM FROM TB A WHERE A.NUM>E.NUM ORDER BY A.NUM
) FROM TB E
WHERE ID=4 AND EXISTS(SELECT TOP 1 NUM FROM TB A WHERE A.NUM>E.NUM ORDER BY A.NUM)
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB
(
ID INT,
NUM INT
)
INSERT INTO TB
SELECT 1,11 UNION ALL
SELECT 2,11 UNION ALL
SELECT 3,3 UNION ALL
SELECT 4,6 UNION ALL
SELECT 5,7
ID NUM
1 3
2 3
3 6
4 7
5 7
update tb
set num=(select isnull(min(num),a.num) from tb where id>a.id) from tb a
select * from tb
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB
(
ID INT,
NUM INT
)
INSERT INTO TB
SELECT 1,11 UNION ALL
SELECT 2,11 UNION ALL
SELECT 3,3 UNION ALL
SELECT 4,6 UNION ALL
SELECT 5,7 UNION ALL
SELECT 6,5
UPDATE TB
SET NUM=CASE WHEN EXISTS(SELECT 1 FROM TB T1 WHERE T1.ID>TB.ID)
THEN (SELECT top 1 NUM FROM TB T1 WHERE T1.ID>TB.ID order by ID)
ELSE TB.NUM END
WHERE ID=4
SELECT * FROM TB
/*
ID NUM
1 11
2 11
3 3
4 7
5 7
6 5
*/
IF object_id('tb') IS NOT NULL
DROP TABLE tb
go
CREATE TABLE tb (id int,num int)
INSERT INTO tb
SELECT 1, 11 UNION all
SELECT 2, 11 UNION all
SELECT 3, 3 UNION all
SELECT 4, 6 UNION all
SELECT 5, 7
UPDATE tb
SET num=CASE WHEN (SELECT min(num) FROM tb WHERE num>a.num ) IS NOT NULL
THEN (SELECT min(num) FROM (SELECT num FROM tb WHERE num>a.num) b)
ELSE num END
FROM tb a
WHERE id=4
SELECT * FROM tb
1 11
2 11
3 3
4 7
5 7
update tb
set num=(select min(num) from tb where num>a.num) from tb a
where exists( select 1 from tb b where b.num>a.num)
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB
(
ID INT,
NUM INT
)
INSERT INTO TB
SELECT 1,11 UNION ALL
SELECT 2,11 UNION ALL
SELECT 3,3 UNION ALL
SELECT 4,6 UNION ALL
SELECT 5,7
UPDATE TB
SET NUM=CASE WHEN EXISTS(SELECT 1 FROM TB T1 WHERE T1.ID>TB.ID) THEN (SELECT MIN(NUM) FROM TB T1 WHERE T1.ID>TB.ID ) ELSE TB.NUM END
SELECT * FROM TB
-------------------------
ID NUM
1 3
2 3
3 6
4 7
5 7
Update T1 A join (Select max(NUM) as NUM From t1)B
set A.sNUM=B.NUM where A.ID=4