/ / Jak dodać identyfikatory do każdej unikatowej wartości w tabeli - mysql, sql, edit, unique-index

Jak dodawać identyfikatory do każdej unikalnej wartości w tabeli - mysql, sql, edit, unique-index

Mam tabelę w mysql z kolumną wypełnionąz wartościami tekstowymi, powiedzmy zwierzęta. Miałem więc kolumnę zwierzątka z wartościami takimi jak: "kot", "pies", "żółw", "kot", "kot", "żółw". W rzeczywistości są setki tysięcy różnych typów zwierząt w tej kolumnie, ale wiele powtórzeń.

Chciałbym stworzyć drugą kolumnęktóry ma indeks dla każdego wpisu w pierwszej kolumnie. Na przykład w powyższym przypadku przypiszemy "cat" id 1, "pies" id 2, "żółw" 3 itd., A kończy się kolumną z wartościami: 1, 2, 3 , 1, 1, 3

Czy jest jakiś sposób na zrobienie tego? (najlepiej w szybki sposób, ponieważ tabela zawiera ponad 7 milionów wierszy).

Odpowiedzi:

1 dla odpowiedzi № 1

Utwórz nową tabelę z wartościami wyszukiwania. Możesz to łatwo zrobić:

create table PetTypes as
select (@rn := @rn + 1) as pettypeid, pettype
from (select distinct pettype from pets) p cross join
(select @rn := 0) params;

Następnie możesz łatwo dodać, zaktualizować lub po prostu użyć kolumny w opcji select:

alter table pets add petttypeid int;

update pets p join
pettypes pt
on p.pettype = pt.pettype
set p.pettypeid = pt.pettypeid;

Chciałbym wtedy polecić usunięcie pettype kolumna z oryginalnej tabeli.

Uwaga: możesz to zrobić bez tworzenia nowej tabeli. Ale myślę, że stworzenie nowej tabeli odnośników dla tej kolumny jest właściwą drogą.