使用表中另一个字段的值更新一个字段,其中字段值本身就是键
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"
【讨论】:
以上是关于使用表中另一个字段的值更新一个字段,其中字段值本身就是键的主要内容,如果未能解决你的问题,请参考以下文章