我的思路是grade(奖项表)中存放的是奖项名称 比如一等奖和得奖人数 等 我现在用游标遍历这个表 这样就能实现按奖项抽奖 比如一等奖2人 二等奖3人 这样 游标现在到一等奖这个位置了 我想用select top @num from tablename order by newid() 可是报错说@num附近有语法错误 这是一个问题 还有一个问题就是这样抽的话有可能出现一个人同时获得多个奖项的情况 这个怎么解决?谢谢
要使用动态语句才行哈! exec ('select top '+@num+' * from one order by newid()') 第二个问题要看你设计的数据库是怎么样设计的了。
declare @A int,@str varchar(8000) set @a=10 set @str='select top '+str(@a,3,0)+' * into tablenametemp from p_spinfo order by newid()' exec(@str)至于第2个问题楼主可以把抽出来的放如临时表,在关联一下,(查询出来的是临时表没有的记录再order by newid()就可以了)
这样就能实现按奖项抽奖 比如一等奖2人 二等奖3人 这样 游标现在到一等奖这个位置了 我想用select top @num from tablename order by newid() 可是报错说@num附近有语法错误 这是一个问题 还有一个问题就是这样抽的话有可能出现一个人同时获得多个奖项的情况 这个怎么解决?谢谢
exec ('select top '+@num+' * from one order by newid()')
第二个问题要看你设计的数据库是怎么样设计的了。
set @a=10
set @str='select top '+str(@a,3,0)+' * into tablenametemp from p_spinfo order by newid()'
exec(@str)至于第2个问题楼主可以把抽出来的放如临时表,在关联一下,(查询出来的是临时表没有的记录再order by newid()就可以了)