Portál AbcLinuxu, 22. července 2025 04:36
#1093 - You can't specify target table 'wp_postmeta' for update in FROM clausea ucel dotazu: chci smazat duplicitni hodnoty ve sloupci meta_value, ktere se vyskytuji v jednom clanku(post_id)
delete from wp_postmeta where meta_id in ( select max(meta_id) from wp_postmeta where meta_key in ('city','street','phones','faxs','url','mails','services','spec') group by post_id, meta_value having count(*) > 1 )Mimochodem i kdyby ten dotaz na mysql fungoval, je spatne principialne. Pokud tam budou stejne hodnoty vice nez 2x... Spravne by tam melo byt not in.
DELETE FROM `wp_postmeta` WHERE `meta_id` IN ( SELECT MAX(`meta_id`) AS `meta_id` FROM (SELECT `meta_id`, `meta_key`,`post_id`,`meta_value` FROM `wp_postmeta`) AS `t1` WHERE `t1`.`meta_key` IN ('city','street','phones','faxs','url','mails','services','spec') GROUP BY `post_id`, `meta_value` HAVING COUNT(*) > 1 )Ten přidaný select může být i jako
(SELECT * FROM `wp_postmeta`) AS `t1`
a to `t1`.`meta_key`
je tam jen na zdůraznění, stačí jen `meta_key`
DELETE FROM `wp_postmeta` WHERE `meta_id` IN ( SELECT max(`meta_id`) AS `meta_id` FROM (SELECT * FROM `wp_postmeta`) AS `t1` WHERE `meta_key` IN ('city','street','phones','faxs','url','mails','services','spec') GROUP BY `post_id`, `meta_value` HAVING COUNT(*) > 1 )PS: Nároky na dotaz se asi zvyšují… :)
DELETE FROM ... JOIN ... WHERE ...V dokumentaci určitě pár příkladů najdeš.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.