У меня есть таблица, как следующее:SQL - Объединить все записи на основе их уникального идентификатора
GroupID ID Name Address AAA BBB CCC Other Columns
1 00111 AAA ----- --- --- --- ------------
1 00122 BBB ----- --- --- --- ------------
1 00133 CCC ----- --- --- --- ------------
2 00144 DDD ----- --- --- --- ------------
2 00155 EEE ----- --- --- --- ------------
3 00111 AAA ----- --- --- --- ------------
3 00177 GGG ----- --- --- --- ------------
4 00188 PPP ----- --- --- --- ------------
4 00199 OOO ----- --- --- --- ------------
4 00177 GGG ----- --- --- --- ------------
Поэтому в основном все записи имеют одинаковый идентификатор группы являются потенциальными повторяющихся записей. Записи с одинаковым идентификатором могут отображаться в разных группах. Мне нужно перегруппировать их на основе ID
и сделать их только один раз в таблице.
Если ID'00111'
находится в группе 1 и 3, записи двух групп должны быть перегруппированы и иметь уникальный идентификатор группы. Обратите внимание, что в группе 3 ID '00177'
также входит в группу 4, поэтому группы 3 и 4 должны перегруппироваться.
Так что результат будет иметь следующий вид:
GroupID ID Name Address AAA BBB CCC Other Columns
1+3+4 00111 AAA ----- --- --- --- ------------
1+3+4 00122 BBB ----- --- --- --- ------------
1+3+4 00133 CCC ----- --- --- --- ------------
1+3+4 00177 GGG ----- --- --- --- ------------
1+3+4 00188 PPP ----- --- --- --- ------------
1+3+4 00199 OOO ----- --- --- --- ------------
2 00144 DDD ----- --- --- --- ------------
2 00155 EEE ----- --- --- --- ------------
Это является сложной задачей, и эта таблица имеет более 3 миллионов записей, но только 2 миллиона уникальных идентификаторов. Я собираюсь добавить еще один столбец, как Master Group ID
, чтобы зафиксировать записи и объединить их. Но, как показано в примере, '00111'
находится в группах 1 и 3, поэтому группа 1 и 3 должна объединяться, но в группе 3 другая запись '00177'
появляется в группе 4, поэтому группы 1,3 и 4 должны объединяться. Похоже, эта большая цепочка никогда не кончится.
Любые предложения очень ценятся.
Благодаря
Спасибо, Майкл, но это работает только для дубликатов записей, оно не переносит остальные записи внутри этой группы. Пример: http://sqlfiddle.com/#!3/29d00/1 – Kric
Как их «переносить»? –
жаль, что я не был чист. Как показал мой пример, мне нужны 111,122,133,177,188 и 199 в одном и том же уникальном идентификаторе группы. : D – Kric