[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / rf / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная]

[Назад]
Ответ
(оставьте это поле пустым)
Имя (оставьте это поле пустым)
E-mail
Тема
Комментарий
Файл
Перейти к
Подтверждение обновить captcha
Пароль (чтобы удалить пост или файл)
  • Разрешённые типы файлов: GIF, JPG, PNG
  • Максимальный размер файла 1536 килобайт и 2048×2048.
  • Изображения размером более 200x200 точек будут уменьшены.

Файл: 1243168372638.gif -(2кб, 114x68) Показана уменьшенная копия, оригинал по клику.
2 №325  

HELP!!! Как из таблицы нужно выбрать 10 случайных записей. Для каждого есть уникальное поле ID, но там не по порядку числа.
"ORDER BY RAND() LIMIT" идет лесом.

>> №327  
>Как из таблицы нужно выбрать

ооооооомич, дорогой ты мой! сколько лет, сколько зим! У меня капча kley, пойдем поуёбываем! А как выглядит таблица?

>> №330  

Таблица:

id username age
---------------
1 Петя 23
3 Вася 22
...
1000117 Маша 17

Выбрать 10 случайных имён, не перебирая всю таблицу. Как?

>> №332  

снаружи делаешь список ID потом селект wher ID IN( список)

>> №336  

А если записи с таким ID не найдется?

>> №338  

Курсором, ептыблядь. Хуяришь случайное число, выбираешь запись под этим номером (по количеству сделанных FETCH).

>> №340  

добовляеш поле, в ето поле кладеш случайное число или
md5 от номара, по етому полю индекс
генерируеш случайное число и делаеш
select * from table where field>? limit 1

>> №341  
Файл: 1243193867789.jpg -(89кб, 500x367) Показана уменьшенная копия, оригинал по клику.
89

>>340

>> №342  

>>340
Проктолог-кун?

>> №346  

Правильно посоветовали - курсор в помощь или например сторед функцию напиши которая рандомы будет крутить внутри.

>> №347  

вариант с курсорами- тормозной
индексы не обеспечивают расчет числа записей и выборку по номеру позиции в индексе

>> №349  

>>347

>вариант с курсорами- тормозной

а больше, извини, никак.
тебе просто необходимо иметь какой-никакой список ID (если, конечно, СУБД сама не проставляет свои внутренние Primary-ключи).
конечно, есть еще вариант уебать по таблице триггером, ведущим список записей, добавленных, к примеру, в четное число милисекунд, если MD5 хэш от поля username делится на 7 нацело. по крайней мере, случайность будет повыше, чем у RAND().

>> №350  

>>349
правильный вариант:
добовляеш поле, в ето поле кладеш случайное число или
md5 от номера, по етому полю индекс
генерируеш случайное число и делаеш
select * from table where field>? limit 1
или
select * from table where field>md5(?) limit 1
если возвращает 0 записей то делаеш
select * from table where field=>0 limit 1

>> №351  

>>349
"тормозной вариант"
означает что он практичски нерабочий при большом количестве записей

>> №352  

select * from table where field>? limit 1 order by field
так правильнее
а вообще sql гавно - xBase рулиз!

>> №353  

ище надо смотреть скольки битное члучайное число гененрируется
число бит долгдно хотябы на 6 превышать число бит потребных для нумерации записей

>> №354  

и вообще те кто начал мзучать БД сразу с sql
те быдло и хуйло ибо они незнаю елеметнарных вещей
по еффективности запросов
нужен либо солидный теоретический курс по Bдревья и прочей поебени используемой при индексации
либо практика на xBase



Удалить пост []
Пароль
[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / rf / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная] [Manage]