Я хотел знать команду sql для извлечения 5 последних строк из моей таблицы? Ниже мой запрос sql. Как я буду делать, чтобы он мог выбрать 5 последних строк строки в строке, не являющейся процессом?
$query = "SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime FROM markers1 WHERE 1";
Вам нужно заказать результаты и установить лимит.
Предполагая, что дата и время вы хотите заказать:
$query = " SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime FROM markers1 WHERE 1 ORDER BY datetime DESC LIMIT 5 ";
EDIT: Чтобы ответить на комментарий OP: «Результат, который я получаю, начинается с строки Row 50 для первого запроса, и это соответствует 49,48,47,46. Возможно ли, что я могу получить этот стартовый ряд frm 46,47,48,49,50 ?»
Вы можете либо сделать это с результатом в PHP, извлекая строки и сохраняя их в массиве, так и реверсив массив. Я не верю, что вы можете эффективно перебирать результирующий ресурс mysql в обратном порядке.
Чтобы сделать это в SQL-запросе, вам нужно создать временную таблицу с исходным запросом:
$query = " SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime FROM ( SELECT lat, lng, datetime FROM markers1 WHERE 1 ORDER BY datetime DESC LIMIT 5 ) AS tmp_markers ORDER BY datetime ASC ";
и$query = " SELECT lat, lng, DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime FROM ( SELECT lat, lng, datetime FROM markers1 WHERE 1 ORDER BY datetime DESC LIMIT 5 ) AS tmp_markers ORDER BY datetime ASC ";
Результат первоначального запроса используется в качестве таблицы для поиска в новом запросе, который упорядочивает по дате времени по возрастанию. Я должен был применить DATE_FORMAT к внешнему запросу, потому что нам нужно снова указать поле datetime.
просто добавь:
ORDER BY datetime DESC LIMIT 5
Лучший способ сделать это – добавить номер строки, а затем отменить свой запрос на основе этого, поскольку у нас нет никаких гарантий того, что ваше поле datetime увеличивается в хронологическом порядке; и я также предполагаю, что по 5 последним строкам вы имеете в виду последние 5, добавленные в таблицу, а не 5 с самым последним временем.
SELECT lat , lng , DATE_FORMAT(datetime,'%W %M %D, %Y %T') AS datetime , @rownum:=@rownum+1 `RowNum` FROM markers1 , (SELECT @rownum:=0) `r` WHERE 1 ORDER BY RowNum DESC LIMIT 5
Просмотрите блог этого чувака для решения, которое я использовал.
Может быть, очень поздний ответ, но это хорошо и просто.
select * from table_name order id desc limit 5
Этот запрос вернет набор из последних 5 значений (последние 5 строк), которые вы вставили в свою таблицу
Проверьте мой запрос за последние 5 записей
SELECT * FROM notices where organizationid = $orgid ORDER BY `notices`.`id` DESC LIMIT 5
Итак, наиболее важным является ORDER BY notices.id DESC LIMIT 5