如何隨機取出n筆資料?? |
尚未結案
|
jayko
一般會員 發表:2 回覆:5 積分:1 註冊:2004-05-30 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
|
jayko
一般會員 發表:2 回覆:5 積分:1 註冊:2004-05-30 發送簡訊給我 |
|
jayko
一般會員 發表:2 回覆:5 積分:1 註冊:2004-05-30 發送簡訊給我 |
引言:我想大大誤會了, 我想要的是從db table 中的某筆資料的值來決定隨機取出的資料筆數…var i:integer; SQLString:String i := Random(5) 1; // Random(5) 的值介於 0 - 4 SQLString := 'Select Top ' intToStr(i) ' from A order by Newid';----------------------------------------------- Creation is the fundation of promotion. |
jimmy_wei
高階會員 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
|
jayko
一般會員 發表:2 回覆:5 積分:1 註冊:2004-05-30 發送簡訊給我 |
|
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
難度在於Top後要跟一個整形數字,所以如果直接採用SQL語句寫的話有困難,我試用過存儲過程也不行。所以推薦試試下面的方法: 首先,寫一個存儲過程:
CREATE procedure TopNumber
@tn integer output
as
select @tn=num from a where ……//你的查詢條件
GO 然後在代碼中:
var TopNb: integer; Begin …… ADOStoredProc1.ProcedureName := 'TopNumber;1'; ADOStoredProc1.ExecProc; TopNb := ADOStoredProc1.Parameters.ParamByName('tn').Value; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select top ' inttostr(TopNb) ' * from A order by Newid'); ADOQuery1.Open; end;代碼沒有測試過! 發表人 - h@visli 於 2005/06/14 15:21:39
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
h@visli
資深會員 發表:103 回覆:429 積分:431 註冊:2004-02-13 發送簡訊給我 |
改寫一下 CREATE procedure TopNumber
as
declare @tn integer
set @tn= select num from a where ......
exec('select top ' @tn ' * from a ......') GO 發表人 - h@visli 於 2005/06/16 14:40:03
------
------------------------ 博采眾家之長,奉獻綿薄之力 ------------------------ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |