|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : pavel kurnosoff 2:5030/1061 25 Feb 2002 01:17:30 To : Ruslan Bondarev Subject : выборка случайной записи, учитывая приоритетность --------------------------------------------------------------------------------
RB> В общем, такой вот дверной косяк: Есть набор записей в БД (mySQL),
RB> каждая запись содержит поле "дата". Hужно
RB> выбрать случайную запись, но если день месяца в сегодняшней дате и день
RB> месяца в поле "дата" совпадают -- такая запись получает более высокий
RB> приоритет (1:4, число в знаменателе может быть любым).
так, для начала псевдоравномерное распределение:
select * from table order by rand() limit 1
теперь с приоритетом. нам надо, чтобы у приоритетные записи оказались ближе к
началу. тогда так:
select * from table order by rand()/if(month(дата)=?,x,1) limit 1
но вот в какой корелляции будет x с 4 и решает ли это именно поставленную
задачу, мне сейчас не сообразить, поздно уже :)
ps: способ mysql-specific, ибо у него документировано поведение order by
rand().
--
.pk
--- Gnus v5.6.45/XEmacs 21.1 - "Canyonlands"
* Origin: there's no tomorrow (2:5030/1061)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/27373c79586a.html, оценка из 5, голосов 10
|