Это не SQL!
Код perl показывает два цикла.
Внешний цикл обходится для каждой записи в массиве @raw_data.Значение каждой «записи» @raw_data передается как параметр SITE_NAME в инструкцию SELECT.
Вы выполняете несколько операторов SELECT, по одному для каждого отдельного сайта.Каждый отдельный SELECT возвращает упорядоченный набор строк, но все они возвращают одну строку для одного сайта.Порядок имен сайтов в массиве @raw_data определяет порядок вывода.
<---------------------------------------------------------------------->Старая запись, которая вводила в заблуждение.
Я предложу несколько возможностей.
(1) Это ошибка.DISTINCT часто, но не обязательно, выполняет сортировку для удаления дубликатов.По какой-то причине МОЖЕТ быть определено, что ORDER BY является избыточным из-за выбранного плана запроса.
Чтобы определить это, проверьте план запроса.EXPLAIN PLAN является самым простым, но лучше использовать DBMS_XPLAN.DISPLAY_CURSOR с sql_id от v $ sql для этого SQL.
(2) Данные сортируются, но есть что-то, вызывающее другой порядок сортировкичем то, что вы ожидаете.Попробуйте заменить PE_FQDN на DUMP (PE_FQDN) PE_FQDN.Это покажет байты, которые он фактически использует.
(3) SELECT не выглядит точно так, как вы сказали.Например,
SELECT FRED BILL, BILL BILL_TOO
FROM table
ORDER BY BILL
будет упорядочивать по столбцу с псевдонимом BILL (который является столбцом FRED), а не по столбцу BILL.
SELECT FRED, BULL
FROM table
ORDER BY 'FRED'
будет сортировать по строке«FRED», а не значение в столбце FRED (и поскольку все отсортировано по одному значению, оно фактически ничего не будет делать).
<-------------------------------------------------------------------------------------->