meta_id | post_id | meta_key | meta_value
----------------------------------------------------------
19368 | 5716 | _wpbdp[fields][8] |
19369 | 5716 | _wpbdp[fields][9] | 124_ico.jpg
19370 | 5716 | _wpbdp[fields][10] |
这是我的mysql表。我希望如果对于postid,metakey _wpbdp[fields][9]
在这种情况下分配了一些值(124_ico.jpg),那么_wpbdp [fields] [10] metavalue将更新为124_img.jpg
对查询的任何帮助都会很棒。
答案 0 :(得分:1)
如果你想要' _wpbdp [fields] [10]'给定post_id的行具有相同的meta_value作为填充meta_value的同一post_id的行,然后您可以使用以下内容:
update tbl t join (select post_id, meta_value
from tbl
where meta_value is not null) x on t.post_id = x.post_id
set t.meta_value = replace(x.meta_value, '_ico', '_img')
where t.meta_key = '_wpbdp[fields][10]'
答案 1 :(得分:0)
SELECT @var:= meta_value FROM t WHERE meta_value IS NOT NULL;
SELECT @no:= REPLACE(REPLACE(SUBSTRING_INDEX(meta_key,']',-2),'[',''),']','')+1 FROM t
WHERE meta_value IS NOT NULL;
UPDATE t
SET meta_value = @var
WHERE REPLACE(REPLACE(SUBSTRING_INDEX(meta_key,']',-2),'[',''),']','')=
@no
ORDER BY meta_id