Captain
@Captain

Как составить запрос, который удалит все записи кроме последних по времени?

Есть таблица с полями а1, а2, а3 и adate. В ней есть ряд записей, в которых поля a1, a2 и а3 совпадают, а врем adate у них разное. Нужно оставить в таблице только те совпадающие записи у которых поле adate имеет максимальную дату.
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
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
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы