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

我想删除单个操作/分支的历史记录数量超过10000的所有历史记录。感谢这个问题和选择的答案,我可以。

希望这个有用。

理查德。

花了很多谷歌搜索,但以下是我在Python for 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)

相关内容

  • 没有找到相关文章

最新更新