34,590
社区成员
发帖
与我相关
我的任务
分享
IF(OBJECT_ID('Student') IS NOT null)
DROP TABLE student
CREATE TABLE Student(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
NAME VARCHAR(20),
Age int
)
INSERT INTO Student
SELECT 'zhangsan',12 UNION
SELECT 'lisi',13 UNION
SELECT 'wangwu',14 UNION
SELECT 'zhaoliu',15 UNION
SELECT 'wangba',16 UNION
SELECT 'tianqi',17
--SELECT * FROM Student s
------------------方法一:通过临时表
SELECT * INTO #Student FROM Student s
DECLARE @sindex INT,@scount INT,@sname VARCHAR(20),@sage int
SELECT @sindex = MIN(a.ID) FROM #Student AS a
SELECT @scount = COUNT(a.ID) FROM #Student AS a
WHILE(@scount>0) --分组的个数
BEGIN
SELECT @sname =a.name,@sage=a.age FROM #Student AS a WHERE a.ID=@sindex
select '方法一:'+@sname+':'+STR(@sage)
DELETE FROM #Student WHERE ID=@sindex
SELECT @sindex = MIN(a.ID) FROM #Student AS a
SELECT @scount = COUNT(a.ID) FROM #Student AS a
END
DROP TABLE tempdb..#Student
------------------方法二:游标
Declare myCurrsor INSENSITIVE Cursor For
SELECT NAME,age FROM Student s
open myCurrsor
fetch next from myCurrsor
into @sname,@sage
while @@FETCH_STATUS=0
begin
select '方法二:'+@sname+':'+STR(@sage)
fetch next from myCurrsor
into @sname,@sage
end
CLOSE myCurrsor
DEALLOCATE myCurrsor
SET NOCOUNT ON ;
DECLARE @sindex INT,@scount INT,@sname VARCHAR(20),@sage int
SELECT @sindex = MIN(a.ID) FROM Student AS a
WHILE @sindex IS NOT null
BEGIN
SELECT @sname =a.name,@sage=a.age FROM Student AS a WHERE a.ID=@sindex
select '方法一:'+@sname+':'+STR(@sage)
SET @sindex=(SELECT MIN(a.ID) FROM Student AS a WHERE ID>@sindex)
END
IF(OBJECT_ID('Student') IS NOT null)
DROP TABLE student
CREATE TABLE Student(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
NAME VARCHAR(20),
Age int
)
INSERT INTO Student
SELECT 'zhangsan',12 UNION
SELECT 'lisi',13 UNION
SELECT 'wangwu',14 UNION
SELECT 'zhaoliu',15 UNION
SELECT 'wangba',16 UNION
SELECT 'tianqi',17
SELECT *,ID AS [@sindex],(SELECT COUNT(1) FROM Student WHERE ID>=a.ID) AS [@scount]
FROM Student AS a
ORDER BY ID
/*
ID NAME Age @sindex @scount
----------- -------------------- ----------- ----------- -----------
1 lisi 13 1 6
2 tianqi 17 2 5
3 wangba 16 3 4
4 wangwu 14 4 3
5 zhangsan 12 5 2
6 zhaoliu 15 6 1
(6 個資料列受到影響)
*/