Autor Zpráva
HP maniak
Profil *
Zdar, potřeboval bych poradit. V mé wordpressácké databázi se objevily duplicity (možná mým zásahem).

V tabulce postmeta mám sloupce meta_id, post_id, meta_key a meta_value. Ve třech posledních sloupcích se vyskytují stejná data (duplicity) - viz obrázek:



Pomůžete mi je odstranit tak, aby tam byly jen unikátní záznamy?

Díky za všechny rady.
wateker
Profil *
tak jedno smaž tím křížkem co máš na každým řádku :-P
TomášK
Profil
FAQ
HP maniak
Profil *
wateker
To nejde. Je tam toho moc.

TomášK
Mohl bys to rozvést přesně pro můj případ? Moc se v SQL nevyznám. Díky.
sysel
Profil
Nabízím pro HP maniak
tímto si prohlídnete, kolik toho přibližně máte multiplikovaného, počet nalezených však může být mnohem větší než skutečný počet multiplicit
SELECT a.meta_id, b.meta_id, a.post_id, a.meta_key, a.meta_value    FROM 
#Update 
database.tabulka as a, database.tabulka as b
#SET b.meta_key = '444444'
where 1
and a.post_id    = b.post_id 
and a.meta_key   = b.meta_key
and a.meta_value = b.meta_value
and a.meta_id    < b.meta_id


v druhém kroku odstraníte komentářové značky (#) a celý první první řádek - tím si nadbytečné multiplicity označkujete (značku si vyberte tak aby se neshodovala s použitými hodnotami ve sloupci!)

v třetím kroku jednoduše označkované řádky odstraníte příkazem DELETE

Delete FROM database.tabulka where meta_key = '444444'


Je nutné mít předem vytvořené indexy pro všechny zúčastněné sloupce, jinak na výsledek můžete čekat hodně dlouho

Varování: Jsou to Vaše data, když nebudete pracovat na kopii, nepochopíte to anebo něco zvrtáte, nechoďte mi sem brečet !
Bezpečnější by bylo, přidat si dočasně sloupec na to značkování a před mazáním si zkontrolovat, že právě jeden řádek z mulipletu mazací značku nemá.
Ale činte jak myslíte, nicméně dotaz patří do rubriky SQL :-)

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