SQL Удалить все строки в таблице на основе другой таблицы и другого значения столбца - PullRequest
0 голосов
/ 18 апреля 2020

table1:

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

table2:

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

Позвольте мне объяснить лучше, я хочу удалить все идентификаторы ORDER в таблице 2, основываясь на всех идентификаторах таблицы 1, если post_status = w c -отправлено

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');

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Попробуйте это:

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

Это немного ресурсоемко, но должно работать ...

0 голосов
/ 18 апреля 2020

Вы можете использовать существующие логи c:

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

Мы также можем попробовать использовать delete join logi c:

DELETE t2
FROM table2 t2
INNER JOIN table1 t1
    ON t1.ID = t2.ORDERID
WHERE t1.poststatus = 'wc-refunded';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...