gpt4 book ai didi

mysql - 在 MySql 中引用同一个表作为 UPDATE 的目标和数据源

转载 作者:可可西里 更新时间:2023-11-01 07:19:56 25 4
gpt4 key购买 nike

我想对我的本地数据库进行更新,使一些字段与表中存在的另一个字段具有相同的值。

我想到了这个查询:

$wpdb->prepare(
"
UPDATE wp_usermeta meta
SET meta.meta_value = (
SELECT usermeta.meta_value
FROM wp_usermeta usermeta
WHERE usermeta.meta_key='nickname'
AND usermeta.user_id = %d
)
WHERE meta.user_id = %d
AND meta.meta_key='first_name'
",
$userId[0],
$userId[0]
)

查询将在 PHP 循环中运行,因此每次迭代时 $userId 都会不同。查询是针对 WordPress 数据库运行的(但这应该与问题无关)。

我在尝试运行查询时收到以下错误:

Table 'meta' is specified twice, both as a target for 'UPDATE' and as a separate source for data

我该如何解决这个问题?

最佳答案

一种方法是使用 join 代替:

UPDATE wp_usermeta meta JOIN
wp_usermeta meta2
on meta.user_id = meta2.user_id and
meta2.meta_key = 'nickname'
SET meta.meta_value = meta2.meta_value
WHERE meta.user_id = %d AND meta.meta_key = 'first_name';

我可能会建议在 where 子句中添加一些内容,例如 meta.meta_value is not null,以防万一名字已经填充。但是,您似乎想要复制该字段,这就是上面所做的。

关于mysql - 在 MySql 中引用同一个表作为 UPDATE 的目标和数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com