ACCESS取随机记录有关问题
ACCESS取随机记录问题
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
adoquery1.SQL.Text:='select top 5 * from czsgz order by Rnd(-ID*' + IntToStr(Random(100)) + ')';
adoquery1.Open;
end;
我发现这样从ACCESS取随机记录,
如果第一条记录为某个ID,第二条记录肯定为另一个ID.
如2351\997\8133\9892\11651,不断的按button1,上面的五条记录很容易出现,ACCESS取随机记录怎样的效率高些啊?
像MSSQL的select top 5 * from czsgz order by newid()就方便多了
------解决方案--------------------
order by sin((id + rnd(id)*3141.5926)/1000)
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
adoquery1.SQL.Text:='select top 5 * from czsgz order by Rnd(-ID*' + IntToStr(Random(100)) + ')';
adoquery1.Open;
end;
我发现这样从ACCESS取随机记录,
如果第一条记录为某个ID,第二条记录肯定为另一个ID.
如2351\997\8133\9892\11651,不断的按button1,上面的五条记录很容易出现,ACCESS取随机记录怎样的效率高些啊?
像MSSQL的select top 5 * from czsgz order by newid()就方便多了
------解决方案--------------------
order by sin((id + rnd(id)*3141.5926)/1000)