[MySQL] Usuwanie takich samych rekordów

Odpowiedz Nowy wątek
mj
2007-02-16 16:05
mj
0

Mam mały problem! ma baze danych imiona:


kolumna1 | kolumna2

cos tam1 | ala
cos tam2 | ala
cos tam3 | ala
cos tam4 | ala
cos tam5 | franek
cos tam6 | piotrek

Jak usunąć powtarzające się rekordy z kolumny2. Tak aby po usunięcią tabela wyglądała tak:


kolumna1 | kolumna2

cos tam1 | ala
cos tam5 | franek
cos tam6 | piotrek

Pozostało 580 znaków

2007-02-16 16:22

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

W mysqlu trzeba chyba troche bardziej pokombinowac, bo nie mozna dac delete i select tej samej tabeli w jednym zapytaniu o ile pamietam.

Stworz sobie taka sama tabele i wykonaj takie zapytania:

insert into tabela2 select kolumna1, kolumna2 from tabela1 t1 where (select count(*) from tabela1 where kolumna_klucz = t1.kolumna_klucz) > 1 limit 1, 99999999
delete from tabela1 where kolumna_klucz in (select kolumna_klucz from tabela2)
drop table tabela2

You need to learn how to walk
before you can run

Pozostało 580 znaków

2007-02-21 14:28

Rejestracja: 15 lat temu

Ostatnio: 12 lat temu

0

Załóż unikalny index na kolumne2 z klauzulą IGNORE - usunie Ci wszystkie duplikaty i uniemożliwi tworzenie nowych. Operacje wstawiania realizuj albo przez INSERT IGNORE jeśli chcesz mieć w bazie wartość innych kolumn przypisaną za pierwszym razem, albo REPLACE jeśli chcesz aktualizować wartości pozostałych kolumn.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0