随机读取的记录的合并?
我想从如下两条记录中读取随机记录,然后合并!
我的代码是:
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