Подтвердить что ты не робот

Случайная строка Oracle из таблицы

Я нашел это решение для выбора случайной строки из таблицы в Oracle. Фактически сортировка строк случайным образом, но вы можете получить только первую строку для случайного результата.

SELECT *
FROM table
ORDER BY dbms_random.value;

Я просто не понимаю, как это работает. После ORDER BY это должен быть столбец, используемый для сортировки. Я вижу, что "dbms_random.value" возвращает значение, меньшее нуля. Это поведение можно объяснить или просто так?

Спасибо

4b9b3361

Ответ 1

вы также могли бы подумать об этом так:

SELECT col1, col2, dbms_random.value
FROM table
ORDER BY 3

В этом примере число 3 = третий столбец

Ответ 2

Когда вы заказываете dbms_random.value, Oracle заказывает выражение, а не для столбца. Для каждой записи Oracle вычисляет случайное число, а затем заказывает по этому номеру.

Аналогичным образом:

select * from emp order by upper(ename);

У вас есть заказ на основе функции.