Има възможност, която споделя прилики с отговора на Йенс (+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' );
Ако знаете желания кратък ред (или чрез обработка на таблицата, или чрез някакъв резултат от заявка от нея), създайте временна таблица, която има някаква ключова стойност, за да съответства на желаните редове от оригиналната таблица и след това данните за реда на сортиране:
create table #sortorder( id integer, sortvalue integer );
Задайте полето sortvalue
във временната таблица, за да съдържа желания ред (може да бъде произволен сортируем тип данни - не е задължително да е цяло число):
insert into #sortorder values ( 1, 15 );
insert into #sortorder values ( 2, 12 );
insert into #sortorder values ( 3, 5 );
След това генерирайте резултатите с обединяване към таблицата, която предоставя реда на сортиране:
select sd.* from somedata sd, #sortorder so
where sd.id = so.id
order by so.sortvalue;
person
Mark Wilkins
schedule
26.10.2011