2013-10-08 4 views
1

Таким образом, у меня есть запрос выбора, который работает правильно, предоставляя мне набор названий стран в одном поле. Эти названия стран сокращены, поэтому мое единственное поле выглядит примерно так: rw ,.Получение строк в «исходном» порядке в SQL

С другой таблицы, я могу сопоставить эти «коды стран» с их настоящим именем (например: eg is s Egypt). Проблема в том, что когда я это сделаю, порядок стран будет алфавитным. Теперь я хотел бы, чтобы они были в порядке, они были до второго запроса. Я знаю, что в наборе или таблице в sql нет порядка, но возможно ли, возможно, заказать эти строки по-своему?

Пример:

RW, TZ, UG, сд, например - С первого запроса, у меня есть эти коды, для стран в одной области. Я написал запрос (с функцией подстроки), что обеспечивает мне столик, с одной колонной и пяти рядов, с полным названием стран, как:

Египет
Руанды
Судана
Танзании
Уганды ,

Возможно ли это, чтобы получить их в порядке их кодов?

+1

Добавьте столбец, содержащий идентификатор последовательности и увеличивайте его с каждой вставкой, а затем выберите этот идентификатор, когда вы выберете. – DaveRlz

+1

В реляционной таблице нет такой вещи, как «оригинальный» порядок. Подумайте о рядах в виде мячей в корзине. Какой «порядок» у них есть? СУБД может возвращать строки в любом порядке, если вы не указали инструкцию 'ORDER BY'. Вам нужно найти атрибут, который вы можете использовать для определения инструкции 'ORDER BY'. –

+0

Если код страны ('rw') включен в соединение, почему вы не можете просто заказать это? Он не должен включаться в список выбранных столбцов, чтобы быть частью предложения 'order by', он просто должен существовать (или рассчитываться) из одной из объединенных таблиц. –

ответ

3
select some_columns_here 
from(
    select rownum rn, some_columns --original_query 
    from ... 
) a 
    join Countries on (substring_condition) 
order by rn; 

Но порядок во внутреннем запросе может быть обеспечено только путем order by пункта.

Смежные вопросы