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

Posted

技术标签:

【中文标题】使用表中另一个字段的值更新一个字段,其中字段值本身就是键【英文标题】:Update one field with value from another field in a table where the field values themselves are keys 【发布时间】:2013-03-03 08:53:13 【问题描述】:

我正在尝试将这个 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】:

您可以使用多表更新语法非常简单地实现这一点:

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"

【讨论】:

以上是关于使用表中另一个字段的值更新一个字段,其中字段值本身就是键的主要内容,如果未能解决你的问题,请参考以下文章

根据同一个表中另一个字段的值获取Mysql编号字段的净值

用文档中另一个字段的值更新字段[重复]

使用 T-SQL 中另一个(非 xml)列的值更新 XML

使用mySQL中另一个表中的select结果更新表中的字段

根据 Access DB 中另一个表中的多条记录计算字段的值

SQL中同一个表中,一个字段里面的值等于 另外一个表里面的值 例如表ABC 字段D里面的值如何更新到字段E里面