Let there be a table of messages with the publication date createad_at
. The task is to execute such a DELETE
query, as a result of which the table would have the last 5 records left.
CREATE TABLE IF NOT EXISTS posts ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, created_at date NOT NULL, PRIMARY KEY (id) ); INSERT INTO posts VALUES (1, 'первая запись', '2012-11-01'), (2, 'вторая запись', '2012-11-02'), (3, 'третья запись', '2012-11-03'), (4, 'четвертая запись', '2012-11-04'), (5, 'пятая запись', '2012-11-05'), (6, 'шестая запись', '2012-11-06'), (7, 'седьмая запись', '2012-11-07'), (8, 'восьмая запись', '2012-11-08'), (9, 'девятая запись', '2012-11-09'), (10, 'десятая запись', '2012-11-10'), (11, 'одинадцатая запись', '2012-11-11'), (12, 'двенадцатая запись', '2012-11-12'), (13, 'тринадцатая запись', '2012-11-13'), (14, 'четырнадцатая запись', '2012-11-14'), (15, 'пятнадцатая запись', '2012-11-15'), (16, 'шестнадцатая запись', '2012-11-16'), (17, 'семнадцатая запись', '2012-11-17'), (18, 'восемнадцатая запись', '2012-11-18'), (19, 'девятнадцатая запись', '2012-11-19'), (20, 'двадцатая запись', '2012-11-20');
It would be nice to solve the problem with a single request. It is assumed that the number of records in the table is arbitrary.