Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Duplikaty w bazie
new_user
post 30.03.2011, 22:21:43
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 20.02.2007

Ostrzeżenie: (0%)
-----


Mam w bazie kolumne symbol a niej dane na wzór
00001KB
00003KA
00005KR
00001KB

pytanie jest następujące jak wyłapać duplikaty w bazie. czyli wypluć dane które się powielają?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Malinaa
post 30.03.2011, 22:28:30
Post #2





Grupa: Zarejestrowani
Postów: 573
Pomógł: 6
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


Tray it:

$sql = "SELECT pole, count(*) AS duplikat FROM table GROUP BY pole HAVING duplikat >1"


--------------------
I welcome you on the Internet >>> Design by Malina
Go to the top of the page
+Quote Post
new_user
post 30.03.2011, 22:39:25
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 20.02.2007

Ostrzeżenie: (0%)
-----


Dzięki. Właśnie o takie coś mi chodziło.
Ja eksperymentowałem z czymś takim.
  1. ALTER IGNORE TABLE tabela ADD UNIQUE INDEX(`pole`);
  2. ALTER TABLE `tabel` DROP INDEX `pole`;


Go to the top of the page
+Quote Post
lukaskolista
post 31.03.2011, 07:12:15
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


  1. SELECT t1.pole FROM tabla AS t1, tabela AS t2 WHERE t2.id > t1.id AND t1.sprawdzane_pole = t2.sprawdzane_pole


wyszuka caly "nadmiar" rekordow, jezeli zamiast SELECT uzyjesz DELETE z kazdego duplikatu (wedlug okreslonych przez Ciebie pol) zostanie tylko 1 rekord
Go to the top of the page
+Quote Post
sn1p3r
post 31.03.2011, 08:27:04
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 9.03.2011

Ostrzeżenie: (0%)
-----


Załóżmy, że masz:

  1.  
  2. mysql> SELECT dane FROM testtest;
  3. +-------+
  4. | dane |
  5. +-------+
  6. | test1 |
  7. | test2 |
  8. | test1 |
  9. | test2 |
  10. | test5 |
  11. | test3 |
  12. +-------+
  13. 6 rows IN SET (0.00 sec)




i teraz
  1.  
  2. mysql> SELECT dane, count(dane) AS liczba FROM testtest GROUP BY dane HAVING liczba>1;
  3. +-------+--------+
  4. | dane | liczba |
  5. +-------+--------+
  6. | test1 | 2 |
  7. | test2 | 2 |
  8. +-------+--------+
  9. 2 rows IN SET (0.00 sec)



--------------------
Michał Gruchała
scaleIT.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:53