簡體   English   中英

MySQL查詢,基於其他填充值

[英]Mysql query, populate a value based on other

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,元_wpbdp[fields][9]分配了一些值(124_ico.jpg),則_wpbdp [fields] [10]元值更新為124_img.jpg

查詢的任何幫助將是巨大的。

如果希望給定post_id的'_wpbdp [fields] [10]'行具有與meta_value所在行相同的meta_value,則可以在其中填充meta_value,

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM