[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL: Случайный запрос
denisov2
$SQL = mysql_query("SELECT * FROM database");
$query = mysql_fetch_array($SQL);


можно сделать так, чтобы в $query выводились не все данные, а только одна случайная



Спустя 44 минуты, 3 секунды (10.03.2010 - 08:27) qpayct написал(а):
можно.
я могу посредствами ПХП, но наверняка в мускле тож есть такая возможность. если нет обращайся, напишу.

Спустя 36 минут, 26 секунд (10.03.2010 - 09:04) sergeiss написал(а):
select * from yourtable order by rand() limit 1

Вот только при большом объеме таблицы будет долго выбирать.
Надо все-таки какие-то условия придумать (WHERE), которые ограничат выборку, и позволят получить результат достаточно быстро.

Спустя 1 день, 2 часа, 55 минут, 58 секунд (11.03.2010 - 11:59) denisov2 написал(а):
спасибо!

и ещё один вопрос. как узнать, существует ли в MySQL определённое значение в каком-то поле. К примеру мне нужно такое условие — если в поле users существует значение name, то выполняем такой-то код.

Спустя 7 минут, 5 секунд (11.03.2010 - 12:07) Nikitian написал(а):
$result=mysql_query('select null from table where field="XXX" limit 1');
if($result && mysql_num_rows($result)==1)
{
//Значение есть
}
elseif($result)
{
//Значения нет
}
else
{
//Ошибка запроса
}

Спустя 15 минут, 43 секунды (11.03.2010 - 12:22) Michael написал(а):
Цитата (sergeiss @ 10.03.2010 - 08:04)
select * from yourtable order by rand() limit 1

Вот только при большом объеме таблицы будет долго выбирать.
Надо все-таки какие-то условия придумать (WHERE), которые ограничат выборку, и позволят получить результат достаточно быстро.

Интересно, а если сначала из базы получить общее кол-во строк count(*) (по идее где-то хранится это число а не считается каждый раз заново), в php выбрать уже случайное число x (0<x<это количество) и из базы выбрать:
limit x,1
Может будет быстрее?

Спустя 16 минут, 58 секунд (11.03.2010 - 12:39) sergeiss написал(а):
Цитата (Michael @ 11.03.2010 - 13:22)
по идее где-то хранится это число а не считается каждый раз заново

Считается заново каждый раз, когда ты выполняешь COUNT. Если хочешь, то можешь сам хранить это число где-то. Но в БД такого нету.

Спустя 11 минут, 23 секунды (11.03.2010 - 12:51) denisov2 написал(а):
Nikitian, спасибо!

Спустя 41 минута, 14 секунд (11.03.2010 - 13:32) Nikitian написал(а):
Цитата (sergeiss @ 11.03.2010 - 09:39)
Цитата (Michael @ 11.03.2010 - 13:22)
по идее где-то хранится это число а не считается каждый раз заново

Считается заново каждый раз, когда ты выполняешь COUNT. Если хочешь, то можешь сам хранить это число где-то. Но в БД такого нету.

В information_schema хранятся данные о таблицах, в том числе и количество записей. count(*) без where берётся именно оттуда, а не пересчитывается каждый раз. Плюс имеется кэш запросов.
Быстрый ответ:

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