Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Wyszukiwanie duplikatów
Forum PHP.pl > Forum > Bazy danych
AddoN
Witam, jest jakiś prosty sposób na wychwycenie duplikowanych wierszy tabeli za pomocą PHPMyAdmina?
timon27
przy założeniu że masz podobnie skonfigurowanego:
- wchodzisz na tabelę
- dajesz 'struktura'
- zaznaczasz wszystkie wiersze (kolumny)
- dajesz 'Jednoznaczny'
- jeśli są zduplikowane wiersze to mysql zwróci błąd - #1062 - Duplicate entry 'pierwszakolumna-drugakolumna' for key 1
- w przeciwnym wypadku doda indeks jednoznaczny na wszystkich kolumnach i już nigdy wiersze ci się nie zduplikują smile.gif
AddoN
Cytat(timon27 @ 1.05.2013, 11:55:31 ) *
Wyszukiwanie towarów o takich samych eanach, wyświetla wszystkie pozycje:

  1. SELECT indeks,nazwa,a.ean,stan FROM
  2. (SELECT ean,COUNT(*) AS c
  3. FROM towary WHERE ean>9
  4. GROUP BY ean
  5. HAVING c>1) AS a
  6. LEFT JOIN
  7. (SELECT indeks,nazwa,ean,stan
  8. FROM towary) AS b
  9. ON a.ean=b.ean


  1. SELECT Nazwisko,a.ean FROM
  2. (SELECT ean,COUNT(*) AS c
  3. FROM serwis__smod_users WHERE ean>9
  4. GROUP BY ean
  5. HAVING c>1) AS a
  6. LEFT JOIN
  7. (SELECT Nazwisko,ean
  8. FROM serwis__smod_users) AS b
  9. ON a.ean=b.ean


Spróbowałem zrobić to tym zapytaniem, ale wywaliło jakieś błędy.
Mam jedną tabelę z kolumną Nazwisko i kolumną Imię. Chciałem wyświetlić duplikaty dla wierszy gdzie Nazwisko jest takie samo.

Cytat(timon27 @ 1.05.2013, 11:55:31 ) *
przy założeniu że masz podobnie skonfigurowanego:
- wchodzisz na tabelę
- dajesz 'struktura'
- zaznaczasz wszystkie wiersze (kolumny)
- dajesz 'Jednoznaczny'
- jeśli są zduplikowane wiersze to mysql zwróci błąd - #1062 - Duplicate entry 'pierwszakolumna-drugakolumna' for key 1
- w przeciwnym wypadku doda indeks jednoznaczny na wszystkich kolumnach i już nigdy wiersze ci się nie zduplikują smile.gif


No tutaj problem że tych wierszy jest blisko 1000 i mają prawo się duplikować. Chciałem wychwycić same duplikaty żeby je zweryfikować (niekoniecznie usuwać).

___


Coś takiego chyba nie będzie działać?

  1. SELECT * FROM `serwis__smod_users` WHERE Nazwisko=Nazwisko


Użyłem jeszcze tego

  1. SELECT Nazwisko, Count(Nazwisko) FROM serwis__smod_users GROUP BY Nazwisko ORDER BY Count(Nazwisko) DESC


Jeżeli rozumiem, to dostałem tabelę z nazwiskami i ich ilościami w bazie.

Ale chciałbym żeby przy tym były jeszcze te standardowe opcje - edytuj, uuń itp
timon27
Sory za całkowitą zmianę mojego posta, dopiero po paru minutach zorientowałem się że można to przecież zrobić o wiele prościej.
Niestety widzę że nie odświeżyłeś strony po mojej edycji.
Spróbuj sposobu z indeksem unikatowym.
AddoN
Cytat(timon27 @ 1.05.2013, 12:18:10 ) *
Sory za całkowitą zmianę mojego posta, dopiero po paru minutach zorientowałem się że można to przecież zrobić o wiele prościej.
Niestety widzę że nie odświeżyłeś strony po mojej edycji.
Spróbuj sposobu z indeksem unikatowym.


Znalazło jeden duplikat, a ich jest znacznie więcej ;]
Póki co bawię się coutem
masahuku
Jest jeszcze taki bajer jak DISTINCT możesz dać DELETE FROM tabela WHERE id NOT IN (drugi select) gdzie drugi select pobiera wyłączeni nie-duplikaty.
Majcon
  1. SELECT Nazwisko, COUNT(*) AS test FROM serwis__smod_users GROUP BY Nazwisko ORDER BY test DESC
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.