select top 10 */coluname from tablename order by coluname 没有错 好像top后面不能加参数吧,一加就出错,我刚试的
top 后面是不能跟动态参数的,可以使用这种变通手法 SET ROWCOUNT @topNum select * from Exam where dwbh=@dwbh order by newID() SET RWOCOUNT 0
exec('select top '+@topNum+' * from Exam where dwbh='''+@dwbh+''' order by newID()')
使用动态SQL语句比较合适~~~本帖的标准答案已由 jieyh(无影无形) 提供~~~ 特别提示:两星人物 mmkk() 的答案是错误的: select * from Exam where dwbh=@dwbh order by newID() 我倒~~猩猩也写出这样的SQL语句,,真是晕死了~~~~~误导~~~~~ ----------------------------------------------- 建议把分全给 jieyh(无影无形)。
say sorry~~~由于受了几次星星的当才对猩猩有点意见~~~~ ------------------------------------------- use pubs go declare @dwBH tinyint declare @topNum int set @topNum=3 set @dwBH=75 SET ROWCOUNT @topNum select * from dbo.jobs where min_lvl=@dwbh order by newID() SET ROWCOUNT 0测试如下:job_id job_desc min_lvl max_lvl ------ -------------------------------------------------- ------- ------- 9 Acquisitions Manager 75 175 10 Productions Manager 75 165 11 Operations Manager 75 150(所影响的行数为 3 行)========================================== mmkk() 是对的。 偶是菜鸟,喜欢乱说话,,,学艺不精~~~
说mmkk不对,是因为 偶认为 select * from dbo.jobs where min_lvl=@dwbh order by newID()min_lvl后面不能有动态参数~~~~昏竟然有这样的低级错误,记忆中字段名,表名,数据库名之类作为变量时,必须用动态SQL。 但是在这里,@dwbh只是一个条件参数~~通宵了好几个晚上,,头疼,呀快考试了~~~~脾气有一点
好像top后面不能加参数吧,一加就出错,我刚试的
SET ROWCOUNT @topNum
select * from Exam where dwbh=@dwbh order by newID()
SET RWOCOUNT 0
特别提示:两星人物 mmkk() 的答案是错误的:
select * from Exam where dwbh=@dwbh order by newID()
我倒~~猩猩也写出这样的SQL语句,,真是晕死了~~~~~误导~~~~~
-----------------------------------------------
建议把分全给 jieyh(无影无形)。
还有mmkk兄的方法也是对的.
-------------------------------------------
use pubs
go
declare @dwBH tinyint
declare @topNum int
set @topNum=3
set @dwBH=75
SET ROWCOUNT @topNum
select * from dbo.jobs where min_lvl=@dwbh order by newID()
SET ROWCOUNT 0测试如下:job_id job_desc min_lvl max_lvl
------ -------------------------------------------------- ------- -------
9 Acquisitions Manager 75 175
10 Productions Manager 75 165
11 Operations Manager 75 150(所影响的行数为 3 行)==========================================
mmkk() 是对的。
偶是菜鸟,喜欢乱说话,,,学艺不精~~~
偶认为
select * from dbo.jobs where min_lvl=@dwbh order by newID()min_lvl后面不能有动态参数~~~~昏竟然有这样的低级错误,记忆中字段名,表名,数据库名之类作为变量时,必须用动态SQL。
但是在这里,@dwbh只是一个条件参数~~通宵了好几个晚上,,头疼,呀快考试了~~~~脾气有一点
有错就改,好同志