Question: I have a mysql table that I need to only contain 20 newest records before adding additional records.
New rows are added daily so I would like it first delete any records that are greater than the 20 allowed starting with the earliest.

The table contains an auto increment "id" column so I can easily determine which is the earliest records.

Thanks for any help.

Answer: 
You can specify an offset with the `LIMIT` keyword in your query so the newest 20 rows are kept. According to MySQL's documentation, however, there's no easy way to limit from an offset all the way to the last; instead, they suggest this:

> 
> To retrieve all rows from a certain offset up to the end of the result set, you can use some large number for the second parameter.
> 
> 
> 

So this SQL should do the trick:

```
DELETE FROM table ORDER BY id DESC LIMIT 20, 18446744073709551615;

```
Use `DELETE` with `ORDER BY` and `LIMIT`:

```
DELETE FROM MyTable
ORDER BY MyTable.id DESCENDING
LIMIT 20,18446744073709551615;

```

This will leave the 20 records with the largest `id` and delete the rest.