Выбор случайных записей в Transact-SQL

В спецификации Transact-SQL я ничего не нашел про выборку случайных строк из таблицы. Хотя осуществляется она довольно просто. Основная идея заключается в использовании функции NEWID ( ), которая создает уникальное значение типа uniqueidentifier.  Затем сортируем строки по этому значению и выбираем нужное количество строк.

[codesyntax lang=»tsql»]

SELECT TOP 1 column FROM table
ORDER BY NEWID()

[/codesyntax]

На всякий случай приведу примеры решения данной задачи и для других СУБД

[codesyntax lang=»sql» title=»MySql»]

SELECT column FROM table
ORDER BY RAND()
LIMIT 1

[/codesyntax]

 

[codesyntax lang=»sql» title=»PostgreSQL»]

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

[/codesyntax]

[codesyntax lang=»sql» title=»IBM DB2″]

SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

[/codesyntax]

[codesyntax lang=»oracle11″ title=»Oracle»]

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

[/codesyntax]

Запись опубликована в рубрике SQL с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *