1

別のフィールドの値に応じて、MySQL で検索して置き換えるにはどうすればよいですか? 例えば、

「post_parent」列の「0」値をすべて「126810」に置き換えたいのですが、それらのエントリの「post_type」フィールドにも「トピック」の値がある場合に限ります。

私はそれがこのようなものになると思っていましたが、構文の問題などすべてが機能していないようです:

update wp_posts set post_parent = replace(post_parent,`0`,`126810`) 
WHERE `post_type` LIKE 'topic');

また、それを機能させることができたとしても、10、20、30 などのすべての post_parent 値を 1126810、2126810 などに置き換えたと思います。

これらの問題の両方を解決する方法を知っている人はいますか?

4

2 に答える 2

0

おそらく、case whenあなたを助けるでしょう。

update wp_posts 
set post_parent = 
case when (`post_type` LIKE 'topic'
and post_parent = `0`)
then
replace(post_parent,`0`,`126810`)
end

;

于 2012-12-19T23:47:18.697 に答える
0

WHERE句を拡張できるはずです。

update wp_posts 
set post_parent = replace(post_parent,0,126810)
WHERE post_type = 'topic'
  AND post_parent = 0;

デモで SQL Fiddle を参照してください

于 2012-12-19T23:42:15.547 に答える