[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рандомно сортировать, но сохранить нумерацию
savelikan
Привет всем)))
Помогите, пожалуйста)))
Делаю я запрос к БД, получаю, припустим, 100 строк.
SELECT *
FROM `base`
WHERE ....
ORDER BY `base_id`

всё отлично, но мне нужно рандомно перемешать результаты..... НО! сохранить в кажной строке начальный номер строки.
например:
id-varchar
1,text
7,text
9,text
14,text
19,text

а получить в результате
id-varchar-numbefore
1,text-1
14,text-4
7,text-2
19,text-5
9,text-3

тоесть, после рандомной сортировки нужно знать номер строки до рандомной сортировки

_____________
Одесса - мой город!)))
sergeiss
savelikan, читай http://hudson.su/2010/09/16/mysql-optimiza...-order-by-rand/

Только учти, что если в выборке очень много строк, то запрос будет медленный.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
savelikan
Цитата (sergeiss @ 26.03.2016 - 10:37)
savelikan, читай http://hudson.su/2010/09/16/mysql-optimiza...-order-by-rand/

Только учти, что если в выборке очень много строк, то запрос будет медленный.

В таблице около 10 000 строк, по заданым критериям мы получаем 100 результатов. тоесть здесь оптимизация не нужна.
нужно просто отсортировать рандомно но знать номер строки до рандомной сортировки

_____________
Одесса - мой город!)))
DragonNoir
Если тебе надо выбрать 100 строк по определенному критерию, а потом их перемешать, то в таком случае лучше сортировку перенести на сторону приложения.
Если надо выбрать 100 случайных строк в случайном порядке, то sergeiss дал правильный совет


_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
savelikan
Цитата (DragonNoir @ 26.03.2016 - 10:46)
Если тебе надо выбрать 100 строк по определенному критерию, а потом их перемешать, то в таком случае лучше сортировку перенести на сторону приложения.

вот это и нужно
Тоесть, загнать все результаты без сортировки в массив, потом перемешать этот масив случайным образом...?

_____________
Одесса - мой город!)))
sergeiss
Цитата (savelikan @ 26.03.2016 - 12:41)
В таблице около 10 000 строк, по заданым критериям мы получаем 100 результатов.

Всё прекрасно делается на стороне БД :) Надо только правильно сделать. Сначала в подзапросе выбираем то, что надо. А потом это перемешиваем.

select * from
(
select .....
)
sub_query
order by rand()


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.