2017-02-07 9 views
1

Мне нужно выбрать 10 случайных строк из таблицы, но это должно быть сделано в предложении where, потому что запрос выполняется с использованием другого приложения, которое позволяет изменять эту часть.SQL Server random rows on where where

Я искал множество решений (select top 10, RAND(), ORDER BY NEWID(), ...), но ни один из них не работает в предложении where.

Есть ли возможность сделать это? или какой-то обходной путь?

+0

Почему бы не просто получить результат из приложения и сделать его случайным образом в вашем программная логика? –

+0

Поскольку программа в основном показывает таблицу со всеми строками и позволяет использовать только некоторые базовые фильтры (сортировка и фильтрация по контенту), а затем вариант добавления предложения clausule. – Piston

ответ

1

Если таблица имеет уникальный столбец, который может сделать что-то вроде:

SELECT * FROM TABLE WHERE PRIMARYCOLUMN IN (SELECT TOP(10) PRIMARYCOLUMN FROM TABLE ORDER BY NEWID())

3

Попробуйте это:

SELECT * 
FROM Test 
WHERE Id IN (SELECT TOP 10 Id FROM Test ORDER BY NewId())