MySQL在每个行中唯一的查询条件中删除多行

所以我知道在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) 

有谁知道一个办法做到这一点? 或者是不可能的?

你非常接近,你可以使用这个:

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

我想删除一个行为/分支的历史logging数量超过10,000的所有历史logging。 并感谢这个问题和select的答案,我可以。

希望这是有用的。

理查德。