我想从1到36个数中,随时取出6个数,然后将这6个数按从小到大,插入6个字段中,这个问题用script语句可以做到么,该如何写呢,因为没有做过这样的问题,所以无所下手,多谢大家了
declare @tb table(num int)
declare @i int
set @i=1
while @i<=36
begin
insert @tb select @i
set @i=@i+1
end
--查询6个随机数
select num
from (
select top 6 num from @tb order by newid()
) t
order by num
--插入六个字段中
......................
set nocount on
declare @Tbl1 table (sn int) --动态表,用来获取6个不重复的,小于36的随机数字
create table #Tbl2(Col1 int,Col2 int,Col3 int,Col4 int,Col5 int,Col6 int)
--这个表就是要6个字段的表
declare @sn as int /*获取随机数字*/
set @sn = 1
while @sn <= 36
begin
insert into @Tbl1 select @sn
set @sn = @sn + 1
end
declare @SQL varchar(100) /*获取插入值串*/
set @SQL =
select @SQL = @SQL + , + convert(varchar(5),sn )
from (select top 6 sn from @Tbl1 order by newid())as T
set @SQL = stuff(@SQL,1,1,)
set @SQL = insert into #Tbl2 values( + @SQL + )
--print @SQL
exec(@SQL) /*插入表*/
select * from #Tbl2
/*
Col1 Col2 Col3 Col4 Col5 Col6
----------- ----------- ----------- ----------- ----------- -----------
21 18 29 14 23 16
*/
DECLARE @i int
SET @i=6 -- 要取的数据个数
-- 取数处理
SET ROWCOUNT @i
EXEC(N
DECLARE @s nvarchar(4000),@i varchar(10)
SELECT ID=IDENTITY(int,1,1),value INTO #
FROM(
SELECT TOP 36
value=(SELECT COUNT(*) FROM sysobjects WHERE id<=A.id)
FROM sysobjects A
)AA ORDER BY NEWID()
SELECT @s=N,@i=@@ROWCOUNT
WHILE @i>0
SELECT @s=N,col+@i+N=MAX(CASE ID WHEN +@i+N THEN value END)
+@s,
@i=@i-1
SET @s=STUFF(@s,1,1,N)
EXEC(NSELECT +@s+N FROM #))
SET ROWCOUNT 0