2023年7月13日发(作者:)
利⽤⼀条SQL从表中抽取⼀定数据利⽤⼀条SQL语句从数据库表 随机获取N条记录,各数据库的SQL语句略有不同,如下:1、MySqlSelect * From TABLE Order By Rand() Limit N以上代码效率不⾼,⾃⼰对1000条数据表随机取10条的测试结果为耗时0.125s,有⽹友推荐改为以下代码效率有⼤幅提⾼,耗时为0.005s,不过结果是随机从某个位置开始取N条记录,⽽不是随机取N条记录,略有差异。详细说明见mysql使⽤rand随机查询记录效率测试。SELECT * FROM
TABLE a join (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM
TABLE)-(SELECT MIN(id) FROMTABLE))+(SELECT MIN(id) FROM
TABLE)) AS id) AS b WHERE >= ORDER BY LIMIT N;2、SQL ServerSelect TOP N * From TABLE Order By NewID()NewID()函数将创建⼀个 uniqueidentifier 类型的唯⼀值。3、AccessSelect TOP N * From TABLE Order By Rnd(ID)Rnd(ID) 其中的ID是⾃动编号字段,可以利⽤其他任何数值来完成,⽐如⽤姓名字段(UserName)Select TOP N * From TABLE Order BY Rnd(Len(UserName))4、Oracle1)dbms_random包select * from (select * from Table order by dbms_) where rownum < N;注:dbms_random包需要⼿⼯安装,位于$ORACLE_HOME/rdbms/admin/s_(100,200)可以产⽣100到200范围的随机数2)按概率抽取:select * from Table sample(百分⽐);
例:select * from Table sample(10);
取表Table中记录条数的10%条记录3)sys_guidselect * from (select * from Table orderby sys_guid()) where rownum
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689248358a225695.html
评论列表(0条)