Mysql查询,根据其他人填充一个值

时间:2014-07-20 17:20:28

标签: mysql sql wordpress

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

对查询的任何帮助都会很棒。

2 个答案:

答案 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]'

请参阅:http://sqlfiddle.com/#!2/6656ae/1/0

答案 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