Delete one in two rows in an ordered result set Is there a way to delete one in two rows in a result set using a single query?

E.g.

How to turn:

+-------------+--------+-------+-------------+
| name        | gender | state | date        |
+-------------+--------+-------+-------------+
| John Kenedy | male   | NY    | 1540495296  |
+-------------+--------+-------+-------------+
| Meresa Oslo | female | HI    | 1540493940  |
+-------------+--------+-------+-------------+
| Another guy | male   | HI    | 1540492948  |
+-------------+--------+-------+-------------+
| Mike Lanes  | male   | FL    | 1540491974  |
+-------------+--------+-------+-------------+


To this:

+-------------+--------+-------+-------------+
| name        | gender | state | date        |
+-------------+--------+-------+-------------+
| Meresa Oslo | female | HI    | 1540493940  |
+-------------+--------+-------+-------------+
| Mike Lanes  | male   | FL    | 1540491974  |
+-------------+--------+-------+-------------+


The process should go as follows:


Order the result set shown above by the date column, and then
Keep one row, delete the next one... keep one row, delete the next one...


I'd like to achieve that using a single query, if possible.
The easiest way is to join the table with one combined with sequential numbers:

DELETE w.* 
  FROM table AS w
  NATURAL JOIN ( SELECT z.*
                      , IF(@cnt &lt;&gt; 0, @cnt:=0, @cnt:=1) AS cnt
                   FROM table AS z
                  ORDER BY z.date ASC
               ) AS q 
 WHERE MOD(q.cnt, 2) = 1


Also the same can be done by windowed function ROW_NUMBER() if mysql is  version 8+.