[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получить MAX('id') FROM table
yok
Здравствуйте.
В таблице авто увеличиватся id
Мне нужно получить конкретно максимальное число.
$sql = "SELECT MAX(`id`) FROM kontra";
$result=mysql_query($sql);
if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
if (mysql_num_rows($result) == 1) {
echo "1 rows found<br>";
$max=mysql_fetch_assoc($result);
print_r($max);
echo "<hr>".$result;
exit;
}


Выводит такое
Цитата
1 rows found
Array ( [MAX(`id`)] => 2 ) <br>Resource id #5

как мне именно это максимальное значение получить.
массив print_r($max) выводит, а вот echo $max['id'] или как не получается.
Как мне это число получить из массива этого, или иначе как.



Спустя 1 час, 46 минут, 48 секунд (21.11.2011 - 16:26) Renden написал(а):
yok

$query = mysql_query("SELECT id FROM kontra ORDER BY id DESC LIMIT 1");
$row = mysql_fetch_assoc($query);
echo $row['id'];


зы в твоем примере надо сделать так:

$sql = "SELECT MAX(`id`) AS max_id FROM kontra";
...
...

echo $max['max_id'];

Спустя 3 минуты, 13 секунд (21.11.2011 - 16:29) Michael написал(а):
$sql = "SELECT MAX(`id`) AS maxid FROM kontra";


$row = mysql_fetch_assoc($result);
$max = $row['maxid'];

Спустя 37 секунд (21.11.2011 - 16:30) Renden написал(а):
Michael
хахах, опередил чутка smile.gif

А быстрее с MAX() или с ORDER LIMIT?

Спустя 1 час, 25 минут (21.11.2011 - 17:55) sergeiss написал(а):
Цитата (Renden @ 21.11.2011 - 17:30)
А быстрее с MAX() или с ORDER LIMIT?

МАКС должен выбрать все значения указанного диапазона (в данном случае все в таблице) после чего найти максимальное значение.
ORDER BY ... LIMIT 1, при наличии нужного индекса, выберет сразу же максимальное число.

А дальше сам "думай" wink.gif , что быстрее, особенно если у тебя много тысяч или десятков-сотен тысяч записей.

Спустя 2 минуты, 47 секунд (21.11.2011 - 17:57) Michael написал(а):
При наличии нужного индекса и MAX() не будет "перебирать все". Что то мне это подсказывает.

Спустя 1 час, 15 минут, 57 секунд (21.11.2011 - 19:13) sergeiss написал(а):
Цитата (Michael @ 21.11.2011 - 18:57)
При наличии нужного индекса и MAX() не будет "перебирать все".

Ну да, вобщем-то... Что-то я не подумавши, наверное, написал smile.gif

Спустя 14 часов, 50 минут, 14 секунд (22.11.2011 - 10:04) yok написал(а):
Спасибо за советы. Поднятый вопрос заинтересовал.
sergeiss , так а все таки как правильней.
Может все таки именно созданная функция MAX созданна именно в мускуле, а выражение
ORDER BY id DESC LIMIT 1 это уже собранно пользователем.

Если можно собрать выражение, тогда зачем функцию создавать.
Хотя конечно это все рассуждения.
Спасибо.


_____________
Достучаться до небес.
Быстрый ответ:

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