Reputation: 55
--DELETE DUPLICATE VALUE IF HAVE TO
WITH cte AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY ride_id ORDER BY started_at) AS row_num
FROM `case-study-1-bike-share.bike_share.202102`
)
DELETE FROM cte
WHERE row_num > 1;
I want to delete duplicate value but received the following error instead. How do i fix this?
Upvotes: 1
Views: 1009
Reputation: 44230
Not all SQL implementations allow modifyable CTEs. But you do not need them (in this case).
You could use EXISTS(...)
to check of older observations exist for the same ride_id
) . If older ones exist for this
, this
cannot be the oldest, and can be deleted.
-- DELETE DUPLICATE VALUE IF HAVE TO
DELETE FROM "case-study-1-bike-share.bike_share.202102" d
WHERE EXISTS (
SELECT *
FROM "case-study-1-bike-share.bike_share.202102" x -- same table
WHERE x.ride_id = d.ride_id -- same ride
AND x.started_at < d.started_at -- but older date exists
)
;
Upvotes: 2