C týden
Tento týden až 80% sleva na e-learning týkající se jazyka C
50 % bodů zdarma na online výuku díky naší Slevové akci!
Avatar
gorri
Člen
Avatar
gorri:20.11.2019 18:00

Ahoj. Prosím o radu, jak smazat jedním SQL příkazem duplicitní záznam v tabulce. Koukal jsem se na různá řešení ale abych řekl pravdu, tak jsem z toho za 1. nebyl moc moudrý a za 2. to nefungovalo.
Moc děkuji za případné rady či rovnou ukázku.

Zkusil jsem: Webtrh, stackoverflow, google

Chci docílit: Smazání duplicitních záznamů v DB

Odpovědět
20.11.2019 18:00
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.11.2019 19:37

Nevím jestli jsem to dobře pochopil, ale buď je můžeš smazat ručně a jeden nechat a nebo všechny automaticky pokud teda všechny sloupce jsou stejné, jelikož MySQL nedisponuje nějakému příkazu pokud aspoň vím který by odstranil všechny stejné záznamy a jen jeden by se nechal.

 
Nahoru Odpovědět
20.11.2019 19:37
Avatar
gorri
Člen
Avatar
Odpovídá na Milan Turyna
gorri:20.11.2019 20:54

Ano. Pochopil jsi to správně. V DB mám v i stejné informace a chci zachovat pouze jeden. Na procházení přes 40000 záznamů a promazat je ručně moc nejsem. To by bylo asi na palici :-D
Proto jsem to řešil nějakým scriptem ale nenašel jsem žádný a nic mě nenapadlo. :-)
Takže mě nezbude nic jiného, než si to procházet a ručně mazat asi :(

Nahoru Odpovědět
20.11.2019 20:54
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Odpovídá na gorri
Uživatel sítě :20.11.2019 21:01

Ahoj,

pokud jsem správně pochopil, tak toto je co potřebuješ?

DELETE
  t1
FROM
  `table` AS t1
INNER JOIN
  `table` AS t2
WHERE
  t1.id > t2.id AND t1.name = t2.name
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
20.11.2019 21:01
Chybami se člověk učí, běžte se učit jinam!
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20.11.2019 21:22

a co deletnuti vsech a pridani jednoho?

 
Nahoru Odpovědět
20.11.2019 21:22
Avatar
gorri
Člen
Avatar
Odpovídá na Milan Turyna
gorri:20.11.2019 22:01

V DB je 40000 záznamů a jen některé jsou duplicitní. Vymazat vše a přidat jeden není řešení ale (bez urážky) blbost ;-)

Nahoru Odpovědět
20.11.2019 22:01
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
gorri
Člen
Avatar
Odpovídá na Uživatel sítě
gorri:20.11.2019 22:12

Děkuji. Jen bych potřeboval vědět co znamená t1 a t2. Jako to je jako AS?

Nahoru Odpovědět
20.11.2019 22:12
Když vím, tak poradím. Nikdo neví všechno :-)
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na gorri
Uživatel sítě :20.11.2019 22:17

Tím definuješ dočasný alias tabulky pro dotaz, pomáhá to v přehlednosti kódu např. atd..

Nahoru Odpovědět
20.11.2019 22:17
Chybami se člověk učí, běžte se učit jinam!
Avatar
gorri
Člen
Avatar
gorri:20.11.2019 22:28

Jo myslel jsem si to. Děkuji. Zkusím zítra :-)

Nahoru Odpovědět
20.11.2019 22:28
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21.11.2019 8:53

Ja pouzivam misto t1, t2, t3 radeji pismena a, b, c.
Jde o to, ze nektere tabulky maji strasne dlouhe nazvy (casto i podobne) a lidem se je nechce opisovat. S aliasy je slozitejsi dotaz citelnejsi.

 
Nahoru Odpovědět
21.11.2019 8:53
Avatar
Odpovídá na Peter Mlich
Michal Šmahel:21.11.2019 17:45
// Předem upozorňuji, že nechci nikoho urážet ani zpochybňovat jeho názor. Jedná se pouze o doplnění. Děkuji.

Jen doplním, že jednopísmenné aliasy nebo aliasy typu "t1", "t2", ... "tn" nejsou vždy ideální. Pokud je málo tabulek a kratší dotaz, není s nimi problém. V případě náročnějšího dotazu s větším počtem tabulek je však někdy lepší využívat nějaké konkrétnější aliasy. Opět je však třeba dbát na to, aby ten alias nebyl zbytečně dlouhý a složitý (to by poté neměl žádný smysl). Občas se tedy využijte i slovo nebo spojení zkratek apod.

Nahoru Odpovědět
21.11.2019 17:45
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Peter Mlich
Michal Šmahel:21.11.2019 17:45
// Předem upozorňuji, že nechci nikoho urážet ani zpochybňovat jeho názor. Jedná se pouze o doplnění. Děkuji.

Jen doplním, že jednopísmenné aliasy nebo aliasy typu "t1", "t2", ... "tn" nejsou vždy ideální. Pokud je málo tabulek a kratší dotaz, není s nimi problém. V případě náročnějšího dotazu s větším počtem tabulek je však někdy lepší využívat nějaké konkrétnější aliasy. Opět je však třeba dbát na to, aby ten alias nebyl zbytečně dlouhý a složitý (to by poté neměl žádný smysl). Občas se tedy využijte i slovo nebo spojení zkratek apod.

Nahoru Odpovědět
21.11.2019 17:45
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
gorri
Člen
Avatar
Odpovídá na Uživatel sítě
gorri:28.11.2019 13:08

Tak jo. Funguje to :-)
Super. Děkuji.
Dostal jsem se k tomu až ted.

Nahoru Odpovědět
28.11.2019 13:08
Když vím, tak poradím. Nikdo neví všechno :-)
Avatar
Odpovídá na gorri
Uživatel sítě :29.11.2019 11:04

Skvělé, :) rádo se stalo.. ;)

Nahoru Odpovědět
29.11.2019 11:04
Chybami se člověk učí, běžte se učit jinam!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.