Удаление дубликатов из нескольких уникальных столбцов - PullRequest
0 голосов
/ 11 декабря 2018

Я получаю доступ к таблице, которая принимает участие в каждом столкновении между двумя транспортными средствами (у меня нет прав на изменение этой таблицы).Когда происходит столкновение, для каждой перспективы встречи будет взят один ряд - транспортное средство X столкнулось с транспортным средством Y, а другой ряд для транспортного средства Y столкнулся с транспортным средством X. Вот некоторые примеры данных:

Location  Vehicle1  Vehicle2
103923    5594800   54114
105938    40547     1855442
103923    2588603   5659158
103923    54114     5594800
103923    5659158   2588603
105938    1855442   40547

Естьв каждой строке нет дубликатов, все значения уникальны.Но каждое значение в Vehicle1 существует в vehicle2.Как бы я получить его так, чтобы существовал только один из каждой пары?

1 Ответ

0 голосов
/ 11 декабря 2018
Функции

GREATEST и LEAST могут помочь. УДАЛИТЬ ... ИСПОЛЬЗОВАТЬ синтаксис

DELETE
FROM t a USING
  ( SELECT location, 
           greatest(Vehicle1 , Vehicle2) as vehicle1, 
           least(Vehicle1 , Vehicle2) as vehicle2
   FROM t
   GROUP BY 1,2,3 HAVING COUNT(*) > 1 ) b
WHERE a.location = b.location
  AND a.Vehicle1 = b.Vehicle1
  AND a.Vehicle2 = b.Vehicle2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...