2013-06-12 2 views
0

Мой код дает мне следующее сообщение об ошибке:Неправильное использование групповой функции с MAX

Invalid use of group function

$query = mysql_query("SELECT `text` FROM `text` WHERE `id`=max(id)"); 
    if(!$query) 
die(mysql_error()); 
    while($row = mysql_fetch_array($result)) 
    { 
    echo $row['text']; 
} 

Где моя ошибка?

+3

пожалуйста. Прекратите использование 'mysql_query' в новом коде, это устаревший интерфейс. Вы просто пишете что-то, что не получится полностью, когда эти методы будут удалены в будущих версиях PHP. [Переключение на PDO не сложно] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/) и предоставит ряд другие преимущества. – tadman

ответ

5

Если вы хотите, чтобы строка с самым высоким идентификатором вы можете использовать: SELECT text FROM text ORDER BY id DESC LIMIT 1

2

WHERE положений влияют на отдельные строки, в то время как HAVING положений влияют на агрегирование (результаты GROUP BY статей). Критерий Row должен быть ограничен предложением WHERE, агрегированные функции (например, MAX) должны использоваться в статьях HAVING.

Вы можете сделать это:

SELECT * 

FROM text 

WHERE id = (SELECT MAX(id) FROM text); 
Смежные вопросы