Ответ 1
вы также могли бы подумать об этом так:
SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3
В этом примере число 3 = третий столбец
Я нашел это решение для выбора случайной строки из таблицы в Oracle. Фактически сортировка строк случайным образом, но вы можете получить только первую строку для случайного результата.
SELECT *
FROM table
ORDER BY dbms_random.value;
Я просто не понимаю, как это работает. После ORDER BY это должен быть столбец, используемый для сортировки. Я вижу, что "dbms_random.value" возвращает значение, меньшее нуля. Это поведение можно объяснить или просто так?
Спасибо
вы также могли бы подумать об этом так:
SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3
В этом примере число 3 = третий столбец
Когда вы заказываете dbms_random.value, Oracle заказывает выражение, а не для столбца. Для каждой записи Oracle вычисляет случайное число, а затем заказывает по этому номеру.
Аналогичным образом:
select * from emp order by upper(ename);
У вас есть заказ на основе функции.