SQL Server 隨機取n條記錄

2022-03-08 04:53:20 字數 1157 閱讀 5275

客戶要搞個「 **」 程式。

生個隨機數往記錄上對感覺太麻煩,想讓記錄隨機排序。

select * from table order by rand ( )

rand需要個種子,幫助例項

select rand( (datepart(mm, getdate()) * 100000 )

+ (datepart(ss, getdate()) * 1000 )

+ datepart(ms, getdate()) )

程式執行的太快這方法不成,每次結果都一樣的。

想起guid每個都不同。

select  *  from  table  order by newid ( )

執行了幾次感覺上符合要求,每次出來的都不一樣。至於值域分布沒深究,隨機函式本身也是偽隨機的。

做了個簡單的測試

create table #t(cname char(50) ,sysid uniqueidentifier)

declare @i int

set @i = 0

while (@i) < 1760

begin

insert into #t select top 1 cname,sysid from tvipmember  order by newid() 

set   @i = @i + 1

endselect count(*) from

(select cname as a from #t group by cname,sysid ) a

庫里一共是1760條記錄,執行了幾次結果在 1100 -1200 左右。

oracle,隨機查詢20條

select * from

( select  *   from 表名

order by dbms_random.value

)where rownum < = 20;

2.ms sql server,隨機查詢20條

select top 20    * from  表名order by newid()

3.my sql:,隨機查詢20條

select  *  from  表名 order by rand() limit 20

access excel取隨機n條記錄

乙個簡單的問題被我搞複雜了,都不行,我一直在想著怎麼用 access 的語法來實現,也就是在 access 上面做文章,回來的時候,靈機一動,既然是 sql就應該可以用 sql的語法來實現,何況我對 access 不很熟原來的語句 select top 100 from openrowset mic...

sqlserver隨機取記錄

sqlserver隨機取記錄 2009年03月09日 星期一 下午 06 03 sqlserver本身並沒有提供隨機讀取記錄的功能,但我們可以通過一些方法來實現這個目的。本文介紹了其中幾種方法並比較了各自的優劣。方法一 直接通過sql語句實現,如 select top n from tablea o...

Mysql利用隨機取N條記錄的方法

select sql no cache cid,account,country,companyname from f company as c join select round rand select max cid from f company as id as t where c.cid t....