Как удалить дублирующее значение из строки - PullRequest
0 голосов
/ 04 января 2019

У меня есть такой набор данных:

order_id | order_item_id | category
1        | 1             | book
1        | 2             | pen
1        | 3             | book

Теперь мне нужно удалить order_item_id и его строку, которая имеет повторяющиеся значения в столбцах категории, но при этом оставить 1 из них.Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 04 января 2019

Удалить, если есть строка с такими же 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
  );

См. Демоверсию

0 голосов
/ 04 января 2019

Я бы просто сделал:

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
                            );
0 голосов
/ 04 января 2019

удалить из mytable, где не указан order_item_id (выберите max (order_item_id) из группы mytable по order_ID, категории)

...