Как удалить из SQLite по последней дате? - PullRequest
1 голос
/ 25 апреля 2020

Хорошего дня! У меня возникли проблемы с SQLite, например:

У меня есть таблица, в которой 2 столбца:

Id    Date
11    2020-04-25 19:46:16Z
11    2020-04-25 19:46:19Z
*11   2020-04-25 19:46:25Z
12    2020-04-25 19:46:16Z
12    2020-04-25 19:46:19Z

Я хочу удалить все строки (например), где id = 11 и не строка с последней датой для идентификатора 11 (в таблице * 11 - я хочу сохранить) я пробовал следующие команды:

DELETE FROM Messages WHERE UserId IS 11 AND Date IS (Select Date from Messages WHERE UserId IS 875658012 ORDER BY Date DESK LIMIT 184467440737095516 OFFSET 1) 
// Error: near DESK syntax error (Order by without DESK works but i can't OFFSET last)

DELETE FROM Messages WHERE UserId IS 11 AND Date IS MAX(Date)
// Error: misuse of aggregate function MAX()

DELETE FROM Messages WHERE (Select UserId=11 FROM Messages ORDER BY Date desc LIMIT 1 OFFSET 0)
// It deletes all :(

Как я могу это исправить? ☺

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Попробуйте это

 DELETE FROM Messages WHERE UserId = 11 AND Date < (SELECT MAX(Date) FROM Messages WHERE UserId = 11 )
1 голос
/ 25 апреля 2020

Я хочу удалить все строки (например, где id = 11, а не строку с последней датой для id 11 (в таблице * 11 - я хочу сохранить). Я попробовал следующие команды:

Как насчет коррелированного подзапроса?

delete from messages as m
    where m.id = 11 and
          m.date < (select max(m2.date) from messages m2 where m2.id = m.id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...