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的答案,我可以。
希望这是有用的。
理查德。