簡體   English   中英

SQL 根據另一個表和另一個列值刪除一個表中的所有行

[英]SQL Delete all rows in a table based on another table and another column value

表格1:

|   ID        |  POST STATUS   |
|   12807     |  wc-refunded   | 
|   13075     |  wc-refunded   |

表2:

|   ORDER ID  |  -------   |
|   12807     |  -------   | 
|   13075     |  -------   |

讓我更好地解釋一下,如果 post_status = wc-refunded,我想根據表 1 的所有 ID 刪除表 2 中的所有 ORDER ID

MYSQL 版本:5.7

編輯:用@Tim Biegeleisen 的第一個解決方案修復(謝謝!

    DELETE
FROM wp_woocommerce_downloadable_product_permissions
WHERE EXISTS (SELECT 1 FROM wp_posts
              WHERE wp_posts.ID = wp_woocommerce_downloadable_product_permissions.order_id AND wp_posts.post_status = 'wc-refunded');

您可以使用存在邏輯:

DELETE
FROM table2 t2
WHERE EXISTS (SELECT 1 FROM table1 t1
              WHERE t1.ID = t2.ORDERID AND t1.poststatus = 'wc-refunded');

我們也可以嘗試使用刪除連接邏輯:

DELETE t2
FROM table2 t2
INNER JOIN table1 t1
    ON t1.ID = t2.ORDERID
WHERE t1.poststatus = 'wc-refunded';

試試這個:

DELETE FROM table2 
WHERE OrderID IN (
                    SELECT DISTINCT ID 
                    FROM table1
                    WHERE PostStatus = 'wc-refunded'
                 )

它有點資源密集型,但應該可以工作......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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