日期:2014-05-18  浏览次数:20548 次

关于一个 SQL 随机 函数的问题
SQL code


with t1 as(
select Row_number() over(order by id) as B,fid  from Order_Main 
where ov_bid like'%是%'  and OV_CaoDan<>'废单'  and  OV_CaoDan<>'签单'
and fstype<>3 and ftradetype in (2))

select  fid      
from t1   where B in( cast(ceiling(rand() * (select count(*) from t1)  )as int)  )




  随机的可能性 很小, 有时 还会跑 出 空值 , 怎么 能让 随机可能性 很大, 又不出空值 。 。。?

------解决方案--------------------
SQL code
select  top fid      
from t1   
order by newid()

------解决方案--------------------
直接用newid()嘛,还编号干啥
SQL code
select top1 fid  from Order_Main 
where ov_bid like'%是%'  and OV_CaoDan<>'废单'  
  and  OV_CaoDan<>'签单'
and fstype<>3 and ftradetype in (2))
order by newid()

------解决方案--------------------
探讨
问一下, 如果 跑出空值,就 返回 重新 跑, 直到 跑出值, 这个怎么做