DELETE `t`.*
FROM (
SELECT `a1`, `a2`, `a3`, MAX(`adate`) AS `maxdate`
FROM `table`
GROUP BY `a1`, `a2`, `a3`
) AS `t1`
RIGHT JOIN `table` AS `t` ON `t`.`a1` = `t1`.`a1`
AND `t`.`a2` = `t1`.`a2` AND `t`.`a3` = `t1`.`a3`
AND `t`.`adate` = `t1`.`maxdate`
WHERE `t1`.`maxdate` IS NULL