关于网友提出的“ 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?”问题疑问,本网通过在网上对“ 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?
描述: 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?
解决方案1: 哥们,实在不知道你遇到什么错误,无语,Delphi2007的代码,无错:
procedure TForm9.Button1Click(Sender: TObject);
var
FADOConnection:TADOConnection;
begin
FADOConnection:=TADOConnection.Create(nil);
try
FADOConnection.LoginPrompt:=False;
FADOConnection.ConnectionString:='Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=testdb;Data Source=127.0.0.1';
FADOConnection.Open;
FADOConnection.Execute('select top 10 * from ( select top 30 * from table1 where (1=1) order by id desc) as temptable order by rand(-(id)*rand())');//temptable别名而已
finally
if FADOConnection.Connected then FADOConnection.Close;
if Assigned(FADOConnection) then FreeAndNil(FADOConnection);
end;
end;
解决方案2:
with ADOQuery1 do
begin
Close;
sql.Clear;
sql.Add('SELECT TOP 10 * FROM (SELECT TOP 30 * FROM a ORDER BY zd DESC) DERIVEDTBL ORDER BY NEWID()');
Open;
end;
用着好了,我刚才在mssql2000上测试过了可以实现!
以上介绍了“ 在线等待 ,我用delphi7写程序,要用sql 随机抽取表a中按字段zd降序排列的前30条记录中的任意十条记录,请问如何写sql语句?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3180569.html