假设我们有下表
orderId productId orderDate amount
1 2 2017-01-01 20:00:00 10
1 2 2017-01-01 20:00:01 10
1 3 2017-01-01 20:30:10 5
1 4 2017-01-01 22:31:10 1
其中前 2 行已知是重复的(例如错误软件的结果),因为orderId + productId必须形成唯一键
我想删除这种类型的重复项。如何以最有效的方式做到这一点?
如果没有 orderDate 一秒的差异,我们可以使用
SELECT DISTINCT * FROM `table`
不同的是,可以使用 groupby:
SELECT `orderId`,`productId`,MIN(`orderDate`),MIN(`amount`)
FROM table
GROUP BY `orderId`,`productCode`
如果有很多列,我发现后一个命令很累。还有哪些其他选择?
更新:我正在使用Snowflake。