Существует вероятность того, что сходство с ответом Йенса (+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
во временной таблице требуемый порядок (это может быть любой сортируемый тип данных - hasnне должно быть целым числом):
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;