【发布时间】:2021-12-29 09:54:45
【问题描述】:
--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;
我想删除重复值,但收到以下错误。我该如何解决这个问题?
【问题讨论】:
-
您的 SQL 实现不允许从 CTE 中删除。你可以改用
EXISTS()。 -
但我想从表中删除行而不检查它
-
所以你想删除所有除了第一个(每个ride_id?)
-
你可以这样做:从
case-study-1-bike-share.bike_share.202102删除其中ride_id in ( WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BYride_id ORDER BY started_at) AS row_num FROMcase-study-1-bike-share.bike_share.202102) 选择ride_id 来自 cte WHERE row_num > 1 ) -
是的,删除重复行,除了ride_id 列的第一个唯一值
标签: sql google-bigquery