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 |
#2 · Zasláno: 13. 8. 2019, 10:05:11
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 |
#4 · Zasláno: 13. 8. 2019, 11:02:25
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 |
#5 · Zasláno: 13. 8. 2019, 14:07:51
mire, Kajman:
mnohokrát děkuji, funguje perfektně ;) ěště jednou díííík :) paráda |
||
Časová prodleva: 5 let
|
0