Autor Zpráva
mire
Profil
Ahoj,
potřeboval bych poradit jak odstranit duplicity v mySQL. (Nějaké články jsem prošel, ale moc moudrej ztoho nejsem)

mam tabulku, kde je 10sloupcú

ja pořebuji, aby mě to vyhledalo podle jednoho sloupce duplicity.
SELECT * FROM `tabulka` as tab where (select count(id) from `tabulka` where sloupec1 = tab.sloupec1) > 1 order by sloupec1;

to funguje perfektně, najde to cca 15k duplicit, bohužel ted jsem se zasekl. Potřebuji, aby to půlku toho smazalo, kde bude hodnota dalšího sloupcu 2, menší hodnoty (číslo), aby to smázlo jen ty řádky s menší hodnotou ve sloupcu2.

Snad jsem to dobře vysvětlil, všem děkuji mnohokrát za radu, mire
Kajman
Profil
Mrkněte na dvojku v
Některé časteji řešené dotazy pro MySQL - FAQ » Odstranění duplicit
mire
Profil
Kajman:
jj, díky, tam jsem to právě zkoumal ;) ale pokaždé mě to smaže šecko, tu polovinu bych tam rád nechal, kde je větší hodnota sloupce2 ;) přesto dík, eště zkusím
Kajman
Profil
Tomu by měla zamezit ta podmínka AND t1.id<t2.id co maže jen ty, které jsou menší než nějaký. Ukaže dotaz, který jste podle FAQ sestavil.

Toto vypíše jen ty, které chcete smazat?
SELECT DISTINCT t1.* FROM `tabulka` as t1 JOIN `tabulka` as t2 ON t1.`sloupec1` = t2.`sloupec1` AND t1.`sloupec2` < t2.`sloupec2`

Pak by to tedy bylo dle FAQ
DELETE FROM t1 USING `tabulka` as t1 JOIN `tabulka` as t2 ON t1.`sloupec1` = t2.`sloupec1` AND t1.`sloupec2` < t2.`sloupec2`

Ale samozřejmě zálohovat a testovat na testovacích datech.
mire
Profil
mire, Kajman:
mnohokrát děkuji, funguje perfektně ;) ěště jednou díííík :) paráda

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0