日期:2014-05-20  浏览次数:20370 次

随机读取的记录的合并?
我想从如下两条记录中读取随机记录,然后合并!
我的代码是:
string   mystr= "select   top   5   *   from   T   where   m= 'g '   order   by   newid() "
mystr=mystr+ "   union   "
mystr=mystr+ "select   top   5   *   from   T   where   m= 'h '   order   by   newid() "

但是经过测试,系统提示错误了

注:随机读取记录的语句一定得要,因为工作的需要,必须这样
合并功能同样需要!!!
但是,如果一合并,就错误了,我该怎么办呀,救吗呀,达人救命,



------解决方案--------------------
没看明白 顶一下好了
------解决方案--------------------
为什么错了?

ORDER BY 只能在语句的结尾处使用。不能在构成语句的各个查询中使用 ORDER BY。
这是 SQL 的限制。

怎么办?
string mystr = "select * from ( ";
mystr += "select top 5 * from T where m= 'g ' ";
mystr += " union ";
mystr += "select top 5 * from T where m= 'h ' ";
mystr += ") u order by newid() ";

建议:
使用 StringBuilder 拼接字符串效率更高。
------解决方案--------------------
即把两个子查询先按常规顺序合并
然后再随机处理
我常这样办
------解决方案--------------------
如果真不行,可以建个临时表,往里面写两次5条随机记录,再读出来喽。哈哈
------解决方案--------------------
use pubs
go

create table #aa
(
job_id int,
job_desc varchar(100),
min_lvl tinyint,
max_lvl tinyint
)

insert into #aa
select top 5 *
from dbo.jobs
order by newid()

insert into #aa
select top 5 *
from dbo.jobs
order by newid()

select * from #aa


drop table #aa