我正在尝试在MySQL数据库上使用UPDATE
运行REPLACE
。
我有一个WordPress数据库表(wp_postmeta
),其中包含四个字段:post_id
,meta_id
,meta_key
,meta_value
。
我想REPLACE
denticulata 的所有实例 heteropoda 但仅如果该帖子(即该行{{ 1}})还有一行post_id
属,meta_key
Corydoras 。
例如,
meta_value
只有post_id meta_id meta_key meta_value
4 14 breeding Some stuff here about breeding denticulata
2 15 breeding Some stuff here about breeding denticulata
4 16 genus Corydoras
2 17 genus Apistogramma
meta_id
14
的行实际上应该在那里进行更改,因为post_id
2
的行不是来自 Corydoras genus。
这可能吗?我不知道从哪里开始。
提前致谢,
答案 0 :(得分:0)
UPDATE
wp_postmeta AS upd
JOIN
wp_postmeta AS chk
ON chk.post_id = upd.post_id
SET
upd.meta_value = REPLACE(upd.meta_value, 'denticulata', 'heteropoda')
WHERE
chk.meta_key = 'genus'
AND chk.meta_value = 'Corydoras'
AND upd.meta_key = 'breeding' ; -- not sure if you need this line
请注意,这也会使用'denticulatas'
更新'heteropodas'
(以及包含字符串denticulata
的任何其他字词)并且REPLACE()
区分大小写,因此{{ 1}}不会被替换。