Существует вероятность, что она имеет сходство с ответом Йенса (+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