В отличие от SQL Server и некоторых других баз данных, Big Query не позволяет удалять напрямую из CTE.Но мы можем указать вашу целевую таблицу, а затем использовать номер строки в предложении WHERE
.
DELETE
FROM yourTable AS t1
WHERE (SELECT ROW_NUMBER() OVER (PARTITION BY createdOn, id ORDER BY updatedOn)
FROM yourTable AS t2
WHERE t1.id = t2.id) > 1;
Идея состоит в том, чтобы сопоставить значение номера строки с каждой строкой в операторе удаления с помощьюid
, который предположительно является первичным ключом.