[英]How to update rows when WHERE value is a sub query with more than 1 row of results
我想運行這個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_value
到1.00
,其中meta_key
是_test
和post_id
是任何返回的post_id
從子查詢: SELECT post_id FROM wp_postmeta WHERE meta_value = 8032
在phpMyAdmin中模擬此查詢后,它說該子查詢有1個以上的結果 ,因此我該如何進行這項工作?
也許在SQL中並不是真正要做的事情,我想我可以將post_id
子查詢結果放入PHP,然后遍歷它們,然后執行原始SQL。
用IN
替換=
:
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_postmeta'被指定兩次,既作為'UPDATE'的目標,又作為數據的單獨源
可以固定為
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
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.