1

我正在尝试将此 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"
4

1 回答 1

4

您可以使用多表更新语法非常简单地实现此目的:

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"
于 2013-03-14T19:55:43.127 回答