Как из таблицы БД извлечь последнюю добавленную запись?

110
26 января 2022, 03:20

Можно ли это сделать с помощью LIMIT? Или можно ли извлечь запись у которой самый большой id, так как у каждой строки он автоинкемируемый, а значит самая последняя будет иметь самое большое значение в столбце id?

cur.execute('SELECT * FROM posts LIMIT 0,1')

Делаю так, но это самая первая строка извлекается.

Answer 1

Одна запись с самым большим id:

SELECT * FROM table WHERE ... ORDER BY id DESC LIMIT 1

Answer 2

Если вы хотите получить последний id, сгенерированный на стороне MySQL сервера при помощи AUTO_INCREMENT (предположил что данный вопрос - продолжение этого вопроса), то это можно сделать так:

после вставки в таблицу с AUTO_INCREMENT:

cursor.execute("INSERT INTO ...")

можно использовать атрибут lastrowid объекта cursor, чтобы получить последний id, вставленный данным курсором:

cursor.lastrowid

или метод:

connection.insert_id()

чтобы получить последний id, вставленный в данном соединении.

PS роследний метод лучше использовать в том случае если приложение использует несколько курсоров для одного соединения.

Answer 3
cur.execute('SELECT * FROM posts ORDER BY id DESC LIMIT 1')
Answer 4

Как здесь уже все указали, нужен ORDER BY и затем LIMIT 1. Добавлю только замечание, что строго говоря наибольший ID может быть не у той записи, которая вам нужна.

Если надо вычислить ID после вставки, то обычно полагаются на cursor.lastrowid.

А если речь о самой свежей записи в календарном смысле, то логично делать сортировку по полю с датой

cur.execute('SELECT * FROM posts ORDER BY posted_at DESC LIMIT 1')
READ ALSO
Как лучше хранить данные

Как лучше хранить данные

Приветствую всех и поздравляю с наступающим Новым годом)

151
Prompt при изменении innerHTML-a выдает undefined

Prompt при изменении innerHTML-a выдает undefined

Всем добра и мира! Знаете в чем может быть ошибка? Функция editPrompt при вызывании выдает undefined

232
Валидация в Vue и bootstrap-vue

Валидация в Vue и bootstrap-vue

Делаю валидацию полей в VueПодключен bootstrap-vue, который имеет встроенную кривую валидацию, которая работает не так как нужно, то есть высвечивает...

125
Узнать, сколько чётных чисел между двумя числами

Узнать, сколько чётных чисел между двумя числами

Не включая четные границы интервала:

80