如何任意的取得資料表內的任一筆資料(亂數取得) |
答題得分者是:cashxin2002
|
eric039
中階會員 發表:57 回覆:126 積分:51 註冊:2002-11-30 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 試試這樣的方法﹕
Var I, J : Integer; begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select * From TableName'); ADOQuery1.Open; Randomize; I := ADOQuery1.RecordCount; J := Random(I) 1; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('Select * From TableName Where '); ADOQuery1.SQL.Add('鍵值欄位 Not In (Select Top X 鍵值欄位 '); ADOQuery1.SQL.Add('From TableName) and 鍵值欄位 In '); ADOQuery1.SQL.Add('(Select Top Y 鍵值欄位 From TableName)'); ADOQuery1.Text := StringReplace(ADOQuery1.Text, 'X', IntToStr(J), [rfReplaceAll, rfIgnoreCase]); ADOQuery1.Text := StringReplace(ADOQuery1.Text, 'X', IntToStr(J 1), [rfReplaceAll, rfIgnoreCase]); ADOQuery1.Open; end;========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟 |
eric039
中階會員 發表:57 回覆:126 積分:51 註冊:2002-11-30 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi eric039, 以下有一篇討論,but 是針對 Oracle 的,也許你可以套用此觀念試試
http://blog.itpub.net/post/6/318 此外,你用的是何種資料庫?版本為何?
----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
Kenlin2004
一般會員 發表:20 回覆:33 積分:10 註冊:2004-10-27 發送簡訊給我 |
|
eric039
中階會員 發表:57 回覆:126 積分:51 註冊:2002-11-30 發送簡訊給我 |
Kenlin2004 大大
關於您的方法
select * from your_table where rownum=(select random (count(*)) from your_table) 我是使用 MS SQL 2000
SQL 2000 並沒有 rownum 這個東東可以使用
而且 SQL 2000 內的 random 是 rand()
rand() 回傳值為 0到1的浮點數
所以 rand 的回傳值在這裡還要作處理才可使用
如果MS SQL 有類似的 rownum 可以使用,這樣應該沒有問題 您的資料庫應該不是 MS SQL
或是您有其他的用法吧! 感謝您的回答 Eric Lin
------
Eric Lin |
wscken
初階會員 發表:28 回覆:75 積分:45 註冊:2003-08-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |