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