Присвоить уникальное значение существующей таблице

В любом случае, добавить уникальный столбец в таблицу, не создавая его заново? У меня около 500к записей. Просто хочу присвоить уникальный номер. Я не могу отказаться от этого, так как существует много зависимостей между системами баз данных. Эта таблица также используется в нескольких представлениях, поэтому повторное создание идентичного представления не приведет к обновлению.

установить идентификатор = уникальное значение

установите id = cast(floor(random() * 1000000000) как int), где id равен нулю

не работает.

очевидно, нельзя использовать оконную функцию row_number () over (), чтобы назначить это либо. Есть другие идеи?

1 ответ

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

обновить table_name установить id = cast(floor(random() * 1000000000) как int), где id равен нулю;

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

создать временную таблицу, рассчитывающую как select id, count (*) из группы table_name по порядку идентификаторов на 2 дес;

обновить table_name set id=null, где id в (выберите id из числа, где count> 1);

- установка уникального значения для нулевых, которые были дураками

обновить table_name установить id = cast(floor(random() * 20000000.34) как int), где id равен нулю;

выберите количество (*), количество (отличный идентификатор) из table_name; - теперь уникальный!

Другие вопросы по тегам