日期:2014-05-17  浏览次数:20549 次

有点疑惑
select id,newid() from dizigui where id = 342 
union
select top 3 id,newid() from dizigui where id != 341 and id != 342 order by newid()

执行这条语句时
除342这条记录
剩余的3条总是表的前3条记录
只是顺序不同而已

select top 3 id,newid() from dizigui where id != 341 and id != 342 order by newid()

单独执行这条语句
总是能随机的抽取3条记录

---为什么呢

我的目的是想除342这叫记录之外,另外3条记录是随机取出来的
------解决方案--------------------
试试这个
select id,newid() from dizigui where id = 342  
union
select top 3 id,newid() from dizigui where id != 341 and id != 342 order by checksum(newid())

------解决方案--------------------
select Pid from Product where pid=20
union
 select PID from (select top 3 PID,NEWID() as a from Product order by checksum(newid()))A