Autor | Zpráva | ||
---|---|---|---|
HP maniak Profil * |
#1 · Zasláno: 2. 7. 2009, 17:33:00
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 * |
#2 · Zasláno: 2. 7. 2009, 19:35:19
tak jedno smaž tím křížkem co máš na každým řádku :-P
|
||
TomášK Profil |
#3 · Zasláno: 2. 7. 2009, 20:24:46
|
||
HP maniak Profil * |
#4 · Zasláno: 3. 7. 2009, 07:36:35
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 |
#5 · Zasláno: 3. 7. 2009, 18:22:09 · Upravil/a: sysel
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 :-) |
||
Časová prodleva: 15 let
|
0