@Tannenfels

Как обновить с помощью UPDATE все строки, кроме первой в GROUP BY?

Есть таблица, в сокращённом виде такой структуры:
some_counter INT nullable
parsed_string VARCHAR not null
datetime (YYYY-MM-DD H:i:s)

Представим себе результат такого запроса:
SELECT * FROM table WHERE some_counter IS NULL AND datetime >='2018-12-12' GROUP BY parsed_string HAVING count(*)>1;


Внимание, вопрос. Нужно всем строкам в группах, кроме самой ранней по полю datetime, проставить some_counter = 2, а самой ранней в каждой отобранной группе оставить null.
И кстати, есть ли возможность сделать это UPDATE'ом без вложенного подзапроса SELECT?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE `table` AS `t1`
  JOIN `table` AS `t2`
    ON `t1`.`some_counter` IS NULL
      AND `t1`.`datetime` >= '2018-12-12'
      AND `t2`.`some_counter` IS NULL
      AND `t2`.`parsed_string` = `t2`.`parsed_string`
      AND `t2`.`datetime` > `t1`.`datetime`
  SET `t2`.`some_counter` = 2
Ответ написан
Ваш ответ на вопрос

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

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