![]() |
Страницы (2): [1] 2 » Показаны 16 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Random запрос (http://netadmin.ws/forum/showthread.php?threadid=5028)
Random запрос
хочется random запрос. чтонибудь типа ...
SELECT field1, field2 FROM table WHERE (здесь условие) and field1=random();
тоесть выбрать случайную запись, отвечающую определенному условию
возможно ли такое одним запросом, а то приходится в скрипте генерировать случайное число и проверять существует ли такая запись
Попробуй ORDER BY RAND() LIMIT 1 в запрос дописать и будет тебе случайная запись.
Randomize It
http://www.sensationdesigns.com/products/scripts/randomizeit.php?view=demo
__________________
Международное брачное агенство в Сибири.
quote:
Первоначальное сообщение от Tagore
Randomize It
quote:
Первоначальное сообщение от Nevermind
Попробуй ORDER BY RAND() LIMIT 1 в запрос дописать и будет тебе случайная запись.
А нет способа "полегче"? Т.е. как я понимаю вся таблица сотируется (что ресурсоемко) а потом выбирается 1ая строка... Ничего проще нет?
__________________
Админ - вождь Апачей...
Для больших таблиц можно сначала count(*), а потом LIMIT offset,1
__________________
The time was broken ...
RaZEr можно поподробнее...
__________________
Админ - вождь Апачей...
Получаешь количество строк, например 3000. Генеришь число от 1 до 3000, например 250. Выбираешь строчку LIMIT 250,1
__________________
The time was broken ...
RaZEr а он выбирает не по id а просто по порядковому номеру?
Т.е. не по примари кей, а просто по счёту?
__________________
Админ - вождь Апачей...
RTFM
__________________
The time was broken ...
RaZEr я прочитал сначала этот F**king manual 
quote:
Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой SELECT. LIMIT принимает один или два числовых аргумента. Ð_ти аргументы должны быть целочисленными константами. Если заданы два аргумента, то первый указывает на начало первой возвращаемой строки, а второй задает максимальное количество возвращаемых строк. При этом смещение начальной строки равно 0 (не 1): Для совместимости с PostgreSQL MySQL также поддерживает синтаксис LIMIT # OFFSET #.
mysql> SELECT * FROM table LIMIT 5,10; # возвращает строки 6-15
Для того, чтобы выбрать все строки с определенного смещения и до конца результата, вы можете использовать значение -1 в качестве второго параметра:
mysql> SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
Если задан один аргумент, то он показывает максимальное количество возвращаемых строк:
mysql> SELECT * FROM table LIMIT 5; # возвращает первых 5 строк
Другими словами, LIMIT n эквивалентно LIMIT 0,n.
__________________
Админ - вождь Апачей...
Нормально написано, пока никто не жаловался 
__________________
The time was broken ...
RaZEr да ладно, уже всё понял. Спасибо! Хоть число запросов и увеличилось (с 4х до 6ти) зато время выполнения скрипта (у меня лок. серв. ХÐ_2500+,256МбDDRPC3200), уменьшилось с 0,04-5 до 0,02 сек.!!! Помоему это много!
__________________
Админ - вождь Апачей...
Наверно все-таки число запросов увеличилось с 5 до 6
...
__________________
The time was broken ...
RaZEr
нет. Считать я умею...
У меня 2 ф-ии должны выбирать случ. строки 
__________________
Админ - вождь Апачей...
| Формат времени GMT. Текущее время 11:51. | Страницы (2): [1] 2 » Показаны 16 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.