Можно ли написать SQL-запрос, который возвращает строки таблицы в случайном порядке каждый раз, когда выполняется запрос?
Возвращать строки в случайном порядке
Ответ 1
SELECT * FROM table
ORDER BY NEWID()
Ответ 2
Это простейшее решение:
SELECT quote FROM quotes ORDER BY RAND()
Хотя это не самый эффективный. Этот вариант является лучшим решением.
Ответ 3
Обычный метод - использовать функцию NEWID(), которая генерирует уникальный GUID. Таким образом,
SELECT * FROM dbo.Foo ORDER BY NEWID();
Ответ 4
(Несмотря на теги), сам вопрос неоднозначен, на котором используется сервер базы данных, поэтому вы можете получить здесь ответ на другой сервер. Для других серверов баз данных (MySQL, PostgreSQL, IBM DB2 и Oracle) взгляните на http://www.petefreitag.com/item/466.cfm
Ответ 5
Вот пример (источник):
SET @randomId = Cast(((@maxValue + 1) - @minValue) * Rand() + @minValue AS tinyint);
Ответ 6
Чтобы быть эффективным и случайным, было бы лучше иметь два разных запроса.
Что-то вроде...
SELECT table_id FROM table
Затем на выбранном вами языке выберите случайный идентификатор, затем потяните данные этой строки.
SELECT * FROM table WHERE table_id = $rand_id
Но это не очень хорошая идея, если вы ожидаете, что в таблице будет много строк. Было бы лучше, если бы вы поставили какой-то лимит на то, что вы случайно выбираете. Для публикаций, возможно, случайно выбирайте только те предметы, которые были отправлены в течение прошлого года.
Ответ 7
Это то, что вам нужно:
SELECT * FROM table_name ORDER BY RAND() LIMIT 1