Ⅰ 使用sql語句隨機獲取數據
SQL
Server-->
SELECT
TOP
50
*
FROM
TAB_USERS
ORDER
BY
NEWID();
ORACLE-->
SELECT
*
FROM
(SELECT
*
FROM
TAB_USERS
ORDER
BY
DBMS_RANDOM.RANDOM())
WHERE
RONUM<=50
MYSQL-->
SELECT
*
FROM
TAB_USERS
ORDER
BY
RAND()
LIMIT
50
{
ACCESS-->
SELECT
TOP
50
*
FROM
TAB_USERS
ORDER
BY
RND([欄位])
這條語句在ACCESS中的查詢結果是正確的,但在ASP.NET等後台代碼要寫成如下:
Random
random=new
Random(System.Guid.NewGuid().GetHashCode());
int
val=random.Next();
string
sql="SELECT
TOP
50
*
FROM
TAB_USERS
ORDER
BY
RND("+(-r)+"欄位)";
}
Ⅱ sql 隨機抽取幾條數據的方法 推薦
四種資料庫隨機獲取10條數據的方法
SQL Server:
SELECT TOP 10 * FROM T_USER ORDER BY NEWID()
ORACLE:
SELECT * FROM (SELECT * FROM T_USER ORDER BY DBMS_RANDOM.RANDOM()) WHERE RONUM <= 10
MySQL:
SELECT * FROM T_USER ORDER BY RAND() LIMIT 10
Access:
SELECT TOP 10 * FROM T_USER ORDER BY rnd([一個自動編號欄位])
這條語句在 Access 中的「查詢」中是可以運行並得到隨機結果的,但在 ASP.NET等後台程序代碼中卻無法得到預期的隨機效果。
正確的寫法如下:
以ASP.NET為例:
Random random = new Random(System.Guid.NewGuid().GetHashCode());
int r = random.Next();
string sql = "SELECT TOP 10 * FROM T_USER ORDER BY RND(" + (-r) + "*自動編號欄位)"
Ⅲ 我想隨機取出資料庫中的5條數據
你可以先用select * from user取出全部的數據
然後取得rs的最大記錄數(rs.recordcount),然後再隨機取出1到最大記錄數之間的隨機5個數(這步應該很簡單,不用解釋如何做了吧呵呵),然後使用rs.move(你隨機的5個數字之一)就可以分別取出5條記錄來.這個辦法的好處是你的主鍵id不需要是連續的,而絕大多數表都不是連續的呵呵.所以使用Sql語句的where id=隨機數字的方法不是很安全
Ⅳ sql 隨機抽取幾條數據的方法 推薦
傳說用這個語句管用:select
top
5
*
from
tablename
order
by
newid()
我放到sql的查詢分析器里去執行果然管用,隨機抽取5條信息,不停的換,結果我應用到程序里的時候就不管用了,總是那幾條,於是對這個東西進行了一個研究得出另一種方法:
newid()
可以產生如:"49869293-8891-4B31-B88E-A584D9621490」
這樣的數據結果,而且每一行產生的都不同,這樣的話,我們就可以在查詢的時候給結果集里加上這么一個列,比如:
select
*,newsid()
from
表名
然後我們在給這個結果集排序,因為每次newid()所產生的值都不同,所以如果排序的話,每次當然也都不一樣,這樣我們就可以隨機挑選幾條數據了,那我們在從前面加上一個top
語句就變成了:
復制代碼
代碼如下:
select
top
10
*,
NewID()
as
random
from
表名
order
by
random
用這樣的方法就可以得到。我們想要結果了。不信的話你可以去試試。
Ⅳ 怎麼從mysql表中隨機取數據
從mysql資料庫表中隨機獲取數據
其實,從資料庫隨機獲取數據,很簡單,只須用到一個rand()函數;
select * from table_name order by rand() limit 0,5;
下面是一個小實例:
從文章表中隨機獲取5條數據。
$dblink=mysql_connect("localhost","root","123456");
mysql_query("set names utf8");
mysql_select_db("aixuexi");
$sql="select * from waxx_article order by rand() limit 0,5";
$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
$rows[]=$row;
}
if($rows){
foreach($rows as $v){
?>
<div style="width:350px;height:35px;line-height:35px;border:1px solid #ccc;"><?php echo $v['title']; ?></div>
<?php
}
}else{
echo "暫無文章";
}
Ⅵ SQL server 里從兩個性質相同的表裡隨機抽取10條數據,兩個表裡的數據都要有。請問怎麼寫。
selecttop10*from
(select*fromtable1
unionall
select*fromtable2)t
orderbynewid()
Ⅶ [Oracle]從一個表中隨機取出6條記錄的sql語句
oracle隨機讀取表中的N條數據方法:
1) select * from (select * from tablename order by sys_guid()) where rownum < N;
2) select * from (select * from tablename order by dbms_random.value) where rownum< N;
3) select * from (select * from table_name sample(10) order by trunc(dbms_random.value(0, 1000))) where rownum < N;說明:
sample(10)含義為檢索表中的10%數據,sample值應該在[0.000001,99.999999]之間,其中
sys_guid()
和
dbms_random.value都是內部函數
注:
在使1)方法時,即使用sys_guid()
這種方法時,有時會獲取到相同的記錄,即:和前一次查詢的結果集是一樣的(可能是和操作系統有關:windows正常,linux異常;也可能是因為sys_guid()函數本身的問題,有待繼續研究)
所以,為確保在不同的平台每次讀取的數據都是隨機的,建議採用2)和3)兩種方案,其中2)方案更常用。3)方案縮小了查詢的范圍,在查詢大表,且要提取數據不是很不多的情況下,會對查詢速度上有一定的提高