[英]MySQL delete multiple rows in one query conditions unique to each row
所以我知道在MySQL 中可以在一個查詢中插入多行,如下所示:
INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)
我想以類似的方式刪除多行。 我知道可以根據每行完全相同的條件刪除多行,即
DELETE FROM table WHERE col1='4' and col2='5'
要么
DELETE FROM table WHERE col1 IN (1,2,3,4,5)
但是,如果我想在一個查詢中刪除多行,並且每行都有一組獨特的條件怎么辦? 像這樣的東西將是我正在尋找的:
DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)
有誰知道這樣做的方法? 或者不可能?
對給出的答案的輕微擴展,因此,希望對提問者和其他任何人都有用。
您還可以SELECT
要刪除的值。 但要注意錯誤 1093 - 您不能在 FROM 子句中指定要更新的目標表。
DELETE FROM
orders_products_history
WHERE
(branchID, action) IN (
SELECT
branchID,
action
FROM
(
SELECT
branchID,
action
FROM
orders_products_history
GROUP BY
branchID,
action
HAVING
COUNT(*) > 10000
) a
);
我想刪除單個操作/分支的歷史記錄數超過 10,000 的所有歷史記錄。 感謝這個問題和選擇的答案,我可以。
希望這是有用的。
理查德.
進行了大量的谷歌搜索,但是當我想使用值列表從單個表中刪除多個項目時,這是我在 Python 中為 MySql 所做的。
#create some empty list
values = []
#continue to append the values you want to delete to it
#BUT you must ensure instead of a string it's a single value tuple
values.append(([Your Variable],))
#Then once your array is loaded perform an execute many
cursor.executemany("DELETE FROM YourTable WHERE ID = %s", values)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.