Hei*_*cht 6 delphi sorting advantage-database-server dataset delphi-2009
我希望数据库查询的结果集具有特定的顺序.我想要订购的信息不包含在数据库中,而是在代码中动态生成(因此我无法使用ORDER BY).
有没有办法在执行数据库查询后对数据集进行排序?(我不需要索引访问,但只想迭代所有记录.)
有可能与 Jens 的答案(+1)有相似之处,但以稍微不同的方式得到结果。
给定一个现有的表:
create table somedata (id integer, name char(20));
insert into somedata values ( 1, 'Tim' );
insert into somedata values ( 2, 'Bob' );
insert into somedata values ( 3, 'Joe' );
Run Code Online (Sandbox Code Playgroud)
如果您知道所需的短顺序(通过处理表或其中的某些查询结果),请创建一个临时表,该表具有一些键值以匹配原始表中的所需行,然后是排序顺序数据:
create table #sortorder( id integer, sortvalue integer );
Run Code Online (Sandbox Code Playgroud)
设置sortvalue临时表中的字段以包含所需的顺序(可以是任何可排序的数据类型 - 不必是整数):
insert into #sortorder values ( 1, 15 );
insert into #sortorder values ( 2, 12 );
insert into #sortorder values ( 3, 5 );
Run Code Online (Sandbox Code Playgroud)
然后通过与提供排序顺序的表的联接来生成结果:
select sd.* from somedata sd, #sortorder so
where sd.id = so.id
order by so.sortvalue;
Run Code Online (Sandbox Code Playgroud)