使用表中另一个字段的值更新一个字段,其中字段值本身就是键

时间:2013-03-14 19:51:19

标签: mysql wordpress join

我正在尝试将此select语句转换为UPDATE语句:

SELECT a.option_value, b.option_value
FROM mydb.wp_options a
JOIN mydb.wp_options b 
WHERE a.option_name = "siteurl"
AND b.option_name = "home"

我只想要a.option_value = b.option_value

我怀疑这可以通过基于连接的子查询来完成。结构如下:

col names: option_id, option_name, option_value
values:  1, siteurl, "http://dev.domain.com/"
values:  2, home, "http://www.domain.com"

所以我想用另一个域字段替换option_name =“siteurl”option_value =“dev.domain.com”字段,作为option_name =“home”中的值及其对应的option_value =“http:// www .domain.com”。

所以它看起来像是:

col names: option_id, option_name, option_value
values:  1, siteurl, "http://www.domain.com"
values:  2, home, "http://www.domain.com"

1 个答案:

答案 0 :(得分:2)

您可以使用多表更新语法轻松实现此目的:

UPDATE mydb.wp_options a, mydb.wp_options b 
SET    a.option_value = b.option_value
WHERE  a.option_name  = "siteurl"
   AND b.option_name  = "home"

或者,使用子查询(不需要连接):

UPDATE mydb.wp_options
SET    option_value = (
  SELECT option_value
  FROM   mydb.wp_options
  WHERE  option_name = "home"
)
WHERE  option_name  = "siteurl"