Справка по дедупликации SQL? - PullRequest
0 голосов
/ 16 ноября 2011

Я уверен, что есть масса способов сделать это, но сейчас я изо всех сил пытаюсь найти способ, который будет работать должным образом, учитывая данные.

У меня в основном есть таблица, содержащая дубликаты, с которыми связаны дополнительные поля, и сведения об источнике, которые имеют приоритет над другими.Поэтому в основном я добавил поле «приоритет» в свою таблицу, которое затем обновил в соответствии с приоритетом источника.Теперь мне нужно выбрать отдельные записи, чтобы заполнить мою «уникальную» таблицу записей (которую я затем применю к уникальному ключу, чтобы это не повторилось в требуемом поле!) ....

Итак, яв основном, что-то вроде этого:

Select phone, carrier, src, priority
from dbo.mytable

Таким образом, в основном мне нужно вывести на телефон различное в порядке приоритета (1,2,3,4 и т. д.), и в основном вытащить остальныедругие данные вместе с ним и все еще сохраняют УНИКАЛЬНЫЕ на телефоне.

Я пробовал несколько вещей, используя подвыбор из той же таблицы с минимальным (приоритетным) значением, но результат все еще некажется, имеет смысл.Любая помощь будет принята с благодарностью.Спасибо!

РЕДАКТИРОВАТЬ Мне нужно дедуплицировать из той же таблицы, но я могу заполнить новую таблицу уникальными значениями, если необходимо, основываясь на моем операторе select для извлечения уникальных значений.Это на MSSQL, но полагал, что любой, кто знает SQL, может ответить.

Например, допустим, у меня есть следующие строки:

5556667777, ATT, source1, 1
5556667777, ATT, source2, 2
5556667777, ATT, source3, 3

Сначала мне нужно получить уникальные данные на основе приоритета 1..... проблема в том, что мне нужно удалить все другие дубликаты из таблицы в соответствии с порядком приоритетов без повторения одного и того же номера телефона дважды.Имеет смысл?

1 Ответ

1 голос
/ 16 ноября 2011

То есть вы говорите, что комбинация (телефон, приоритет) уникальна в существующей таблице, и вы хотите выбрать строки, для которых приоритет наименьший?

SELECT mytable.phone, mytable.carrier, mytable.src
  FROM mytable
  INNER JOIN (
    SELECT phone, MIN(priority) AS minpriority
      FROM mytable
      GROUP BY phone
  ) AS minphone
  ON mytable.phone = minphone.phone
  AND mytable.priority = minphone.minpriority
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...