Я подозреваю, что мы можем запросить что-то вроде этого:
UPDATE TEST_SQL_DUPLICATE t
JOIN (
SELECT n.cust_id
, MAX(n.modi_date) AS max_modi_date
FROM TEST_SQL_DUPLICATE n
GROUP
BY n.cust_id
HAVING COUNT(n.cust_id) > 1
) d
ON d.cust_id = t.cust_id
AND d.max_modi_date > t.modi_date
SET t.status = 'Duplicate'
Приведенные примеры данных:
_row cust_id modi_date
------- ----------
1 444 2019-10-28
2 444 2019-10-28
3 444 2019-10-29
4 444 2019-10-30
5 444 2019-10-30
запрос в этом ответе помечает строки от 1 до3, установите для столбца status
значение 'Duplicate'
. Строки 4 и 5 не будут помечены, потому что они обе имеют одинаковый (максимальный) modi_date
.
Мы бы также достигли того же результата, если бы опускали предложение HAVING
в запросе встроенного представления.