我有一个像这样的数据集:
order_id | order_item_id | category
1 | 1 | book
1 | 2 | pen
1 | 3 | book
现在,我必须删除order_item_id
及其在类别列上具有重复值的行,但仍保留其中之一。我该如何实现?
答案 0 :(得分:0)
从不存在order_item_id的mytable中删除(按order_ID,类别从mytable组中选择max(order_item_id)
答案 1 :(得分:0)
如果行order_id
和category
相同但行order_item_id
较少,则删除:
delete from orders o
where exists (
select 1
from orders
where
orders.order_id = o.order_id
and
orders.category = o.category
and
orders.order_item_id < o.order_item_id
);
请参见demo
答案 2 :(得分:0)
我会简单地做:
delete from t
where t.order_item_id > (select min(t2.order_item_id)
from t t2
where t2.order_id = t.order_id and
t2.category = t.category
);