所以我知道在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
);
我想删除所有历史记录,其中的历史记录单个动作/支数超过10,000。 多亏了这个问题,并选择答案,我可以。
希望这是使用的。
理查德。