2

Пользуюсь sqlite.

В базу данных постоянно добавляются строки (с помощью кода). Мне требуется получить последнюю записанную туда строку.

Как это сделать?


Дата добавления записи есть.

cheops
  • 19,454
  • 29
  • 48
  • 139
DenShDen
  • 1,000
  • 1
    В текущем виде на ваш вопрос невозможно дать лаконичный ответ. Для получения ответа поясните, в чем именно вы видите проблему, какие технологии используете и что хотите видеть в ответе. – Kromster Feb 05 '16 at 11:15
  • @KromStern, Обновил вопрос. – DenShDen Feb 05 '16 at 11:17
  • 1
    Если у вас есть например id записи который постоянно увеличивается или например дата добавления записи - то просто берете первую запись с обратной сортировкой по id (дате) – Mike Feb 05 '16 at 11:20
  • Дата добавления записи есть. А код для обратной сортировки подскажите, пожалуйста. – DenShDen Feb 05 '16 at 11:22
  • 2
    @DenShDen SELECT smth FROM table ORDER BY column DESC LIMIT 1 – Алексей Шиманский Feb 05 '16 at 11:26
  • А если колонки с датой нет, то можно, как вариант, ещё и так: SELECT * FROM tbl LIMIT 1 OFFSET (SELECT COUNT(*) FROM tbl)-1 –  Feb 05 '16 at 13:13
  • @АлексейШиманский, пожалуйста, оформите комментарий как ответ. – aleksandr barakin Feb 06 '16 at 08:11

2 Answers2

4

Ответ из комментариев от Алексея Шиманского

SELECT
  *
FROM
  tbl
ORDER BY
  created_at DESC
LIMIT 1
cheops
  • 19,454
  • 29
  • 48
  • 139
2

Выполните запрос SELECT last_insert_rowid() к бд. Результатом будет запись, содержащая последний добавленный ID.

Если используется autoincrement primary key то можно воспользоваться вот таким запросом select seq from sqlite_sequence where name="table_name". Вернет текущее значение инкремента, что и будем являться ключом на последнюю добавленную запись.

temq
  • 5,857
  • 1
  • 12
  • 18
  • 5
    last_insert_rowid() возвращает последний id добавленный в данной сессии. В другой сессии, не делавшей insert данная функция ничего не даст. – Mike Feb 05 '16 at 11:51