Php 当WHERE value是具有多行结果的子查询时,如何更新行

Php 当WHERE value是具有多行结果的子查询时,如何更新行,php,mysql,sql,Php,Mysql,Sql,我想运行以下SQL: UPDATE wp_postmeta SET meta_value = 1.00 WHERE meta_key = '_test' AND post_id = (SELECT post_id FROM wp_postmeta WHERE meta_value = 8032) 我希望它将meta\u值设置为1.00,其中meta\u键是\u test,post\u id是从

我想运行以下SQL:

UPDATE wp_postmeta 
   SET meta_value = 1.00 
 WHERE meta_key = '_test' 
   AND post_id = (SELECT post_id 
                    FROM wp_postmeta 
                   WHERE meta_value = 8032)
我希望它将
meta\u值设置为
1.00
,其中
meta\u键是
\u test
post\u id
是从子查询返回的
post\u id
从wp\u postmeta中选择post\u id,其中meta\u值=8032

在phpMyAdmin中模拟此查询时,它表示子查询有多个结果,因此如何使其工作


也许这在SQL中并不是真正需要做的事情,我想我可以将
post\u id
子查询结果拉入PHP,然后循环遍历它们,然后执行原始SQL..?

=
替换为
中的

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND post_id IN (SELECT post_id FROM wp_postmeta WHERE meta_value = 8032)
但既然表是一样的,为什么不:

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND meta_value = 8032
错误

表“wp_Posteta”指定了两次,既作为“更新”的目标,也作为单独的数据源

可以固定为

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND post_id IN (
        SELECT * FROM (
            SELECT post_id FROM wp_postmeta WHERE meta_value = 8032
        ) t
    )

=
中的
替换为

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND post_id IN (SELECT post_id FROM wp_postmeta WHERE meta_value = 8032)
但既然表是一样的,为什么不:

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND meta_value = 8032
错误

表“wp_Posteta”指定了两次,既作为“更新”的目标,也作为单独的数据源

可以固定为

UPDATE wp_postmeta 
SET meta_value = 1.00 
WHERE 
    meta_key = '_test' 
    AND post_id IN (
        SELECT * FROM (
            SELECT post_id FROM wp_postmeta WHERE meta_value = 8032
        ) t
    )

中的
替换为
中的
当您从同一个表中获取和更新数据时,这里需要子查询什么?将
=
替换为中的当您从同一个表中获取和更新数据时,这里需要子查询什么?因为post\u id可能引用了多个元数据_value@Strawberry即便如此“post_id可能指的是多个meta_值”第二个查询将完成此项工作,但查询:选择*FROM
wp_postmeta
WHERE
meta_key
=“test”和
post_id
IN(选择post_id FROM
wp_postmeta
WHERE meta_value=8023)返回SQL错误:表“wp_postemta”被指定两次,既作为“更新”的目标,也作为“更新”的单独源data@MAZux不,不会的t@MAZux参见示例(我以一种与MySQL兼容的方式重写了第一个查询,但没有改变其含义)。如你所见,结果是不同的:因为post_id可能引用多个meta_value@Strawberry即使如此,“post_id可能引用多个meta_值”,第二个查询也可以完成此项工作。答案=在工作中,但是查询:选择*FROM
wp_postmeta
WHERE
meta_key
='\u test'和
post_id
IN(从
wp_postmeta
中选择post_id,其中meta_value=8023)返回SQL错误:表'wp_postmeta'被指定两次,既作为'UPDATE'的目标,也作为'UPDATE'的单独源data@MAZux不,不会的t@MAZux参见示例(我以与MySQL兼容的方式重写了第一个查询,但没有改变其含义).正如您所看到的,结果是不同的: