Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak usunąć z duplikowane rekordy ?
Forum PHP.pl > Forum > Bazy danych > MySQL
netvalue
Hej

mam w bazie tabelke

id_category | id_product

1 | 2
2 | 3
1 | 2
4 | 5
7 | 9
2 | 3

jak usunac zapytaniem zduplikowane rekordy (pogrubione wyzjej) ?
mar1aczi
Chcesz je usunąć całkowicie, czy ma pozostać tylko jeden wpis?
netvalue
tylko jeden zeby byl unikatowy
Pyton_000
Po pierwsze ustaw klucz na tych 2 kolumnach Unique, to zapobiegnie powstawaniu dubli

Co do kodu:
  1. DELETE c1 FROM tablee c1, tablee c2 WHERE c1.article_id = c2.article_id AND c1.category_id = c2.category_id


Tylko przetestuj to wink.gif Pisane z palca
netvalue
wykasowalo wszystko z tabeli sad.gif
netvalue
Cytat(Turson @ 22.08.2014, 13:12:02 ) *


taak. tez to widzialem przed pisaniem tego posta ale korzystajac z ich porad dodania INDEXU w obu przypadkach dostaje blad

Duplicate entry '1-2' for key 'id_category'

natomiast uzycie :

  1. DELETE FROM member
  2. WHERE id IN (SELECT *
  3. FROM (SELECT id FROM member
  4. GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1)
  5. ) AS A
  6. );



dziala ale nie zostawia jednego oryginalu

Dodam ze moja tabela nie ma indexow
Turson
Przenieś sobie wszystko do nowej tabeli, podczas przenoszenia sprawdź czy taki rekord już nie istnieje. Usuń starą tabelę, a nowej zmień nazwę na starej
mar1aczi
Tak jak podpowiada Turson, z tym że nie będziesz musiał sprawdzać czy rekord insteniej smile.gif
Utwórz nową tabele o takiej samej strukturze. Następnie załóż unikalny klucz (też zostało to wspomniane).
Użyj
  1. INSERT IGNORE / SELECT * FROM
ze starej tabeli do nowej.
INSERT IGNORE "wykona" robotę sprawdzenia zduplikowanych wierszy i nie wstawi ich do nowej tabeli.
netvalue
bajki smile.gif dzieki chlopaki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.