sql - SQL - 删除所有重复项并仅保留一个
问题描述
我有一张如下表
Order_Id (PK), Customer_ID, Order_Amount
A01 AA01 100
A01 AA01 100 (duplicate)
A02 AA01 200
A03 AA02 300
我想删除重复的并保留剩余的
我可以使用下面选择重复项
select *
from
(
select order_id, customer_id, order_amount, row_number () over (partition by order_id order by order_Id) as rnk
from mytable
) where rnk > 1
但是从 mytable 中删除这条记录的下一步是什么?我需要创建一个临时表吗?
谢谢!
解决方案
它应该是作品。
SELECT *
FROM
(
SELECT
order_id,
customer_id,
order_amount,
row_number () OVER (partition by order_id order by order_Id) as rnk
FROM mytable
GROUP BY order_id
) WHERE rnk > 1
推荐阅读
- ruby-on-rails - 如果块是内联或多行给出的,则 Rails 输出不同
- histogram - 为什么 distplot 中的 kde 看起来像一个正弦波?
- integration - 如何将 Zoho CRM 与 Messagebird 集成
- swift - SwiftUI - 检测 TabView 上的点击以滚动到列表顶部
- kubernetes - 卷写入权限
- javascript - 为什么对变量执行操作会影响 Vanilla JS 中的 DOM?
- java - 使用 RandomAccessFile 读取文件属性
- c++ - CMake:将可执行文件链接到多个库 (*.so)
- python - 排序算法的时间复杂度
- xcode - QtCreator 问题选项卡为空