检索数据_12_从表中随机返回N条记录
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?從表中隨機(jī)返回N條記錄
?
需求描述
需求:從雇員表emp里隨機(jī)查詢5條雇員的名稱和工資信息。
解決方法:使用數(shù)據(jù)庫(kù)里內(nèi)置的限制行數(shù)函數(shù)結(jié)合隨機(jī)函數(shù)來解決。
注: 數(shù)據(jù)庫(kù)數(shù)據(jù)集SQL腳本詳見如下鏈接地址
員工表結(jié)構(gòu)和數(shù)據(jù)初始化SQL腳本
SQL代碼
--Mysql: SELECT ename,sal FROM emp order by rand() limit 5;-- Sql server: SELECT TOP 5 ename,sal FROM emp ORDER BY NEWID()注: newid是SQL Server里的內(nèi)置函數(shù),因?yàn)閚ewid()返回的是uniqueidentifier類型的唯一值,而且每次生成的值都不一樣,所以能達(dá)到隨機(jī)的效果。
執(zhí)行結(jié)果
?
-- Oracle: SELECT * FROM (SELECT ename,sal FROM empORDER BY Dbms_Random.value() ) WHERE rownum <=5注: dbms_random是一個(gè)可以生成隨機(jī)數(shù)值或者字符串的程序包。這個(gè)包有initialize()、seed()、terminate()、value()、normal()、random()、string()等幾個(gè)函數(shù),但返回隨機(jī)值的函數(shù)value()是最常用的。
你可以直接訪問這個(gè)隨機(jī)數(shù)字的函數(shù),它返回個(gè)0到1之間的一個(gè)小數(shù)。
SELECT Dbms_Random.value() AS RAND_VALUE FROM DUAL;執(zhí)行結(jié)果
如果想生成1-100之間的隨機(jī)數(shù),你可以這么做:
SELECT TRUNC(Dbms_Random.value()*100) AS RAND_VALUE FROM DUAL;執(zhí)行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的检索数据_12_从表中随机返回N条记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么时间吃比较好,一天吃几次?
- 下一篇: 检索数据_13_从表中查询空值