Oracle случайная строка из таблицы - PullRequest
13 голосов
/ 13 октября 2011

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

SELECT *
FROM table
ORDER BY dbms_random.value;

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

Спасибо

Ответы [ 2 ]

23 голосов
/ 13 октября 2011

Вы также можете думать об этом так:

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

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

7 голосов
/ 13 октября 2011

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

Аналогичным образом это выглядит так:

select * from emp order by upper(ename);

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

...