【发布时间】:2020-11-12 22:55:18
【问题描述】:
我的数据中有重复值。但是,从重复值中,我只想存储 1 个值并删除其余相同的重复值。 到目前为止,我已经找到了删除所有重复值的解决方案。
代码:
SELECT ID, a.date as date.A, b.date as date.B,
CASE WHEN a.date <> b.date THEN NULL END AS b.date
except(date.A)
FROM
table1 a LEFT JOIN table2 b
USING (ID)
WHERE date.A = 1
示例输入:
示例输出(仅存储重复值中的 1 个值并删除其余值):
注意:查询可能会出错,因为它会删除所有重复的值。
【问题讨论】:
-
在您的数据样本中,您没有主键 .. 那么如何尝试删除具有相同值的行而不是另一行?? .. 更新您的数据示例,添加信息以定义主键
-
使用真实数据库编辑。 ID不是主键吗?它将是具有重复行的其他 ID
-
查看您的示例 .. 我看到的总是相同的值 .. 根据定义,主键必须是唯一的 .. 因此,如果您的有效主键很容易删除 duplicatedc 行,否则是不可能的..
-
是否可以像 ..remove * where date > 1 for each ID (?) ..sorry not a right query, but my idea is there
-
您的查询真的很难听懂。您错误地使用了
except,case表达式没有意义。
标签: sql google-bigquery