簡體   English   中英

當WHERE值是包含多於1行結果的子查詢時,如何更新行

[英]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_value1.00 ,其中meta_key_testpost_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM