删除SQL行的最佳方法我想要的方式

时间:2014-06-22 09:24:41

标签: mysql sql

如何构建SQL查询以删除我想要的内容。

我有两张桌子。 表格1。 ID:对此问题的一些随机不重要列:DateTime:UserID

表2。 ID:对此问题的一些随机不重要列:DateTime:UserID

这两个表与DateTime和UserID

相关

无论如何,我可以创建一个查询,这样如果table1中的行没有匹配的DateTime&用户ID。

由于

3 个答案:

答案 0 :(得分:0)

您可以使用LEFT JOIN

DELETE table2 
FROM table2 t2 LEFT JOIN table1 t1 ON t1.`DateTime` = t2.`DateTime` 
                                  AND t1.`UserID` = t2.`UserID` 
WHERE t1.`UserID` IS NULL

答案 1 :(得分:0)

DELETE
FROM    table2 t2
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    table1 t1
        WHERE   (t1.userId, t1.dateTime) = (t2.userId, t2.dateTime)
        )

答案 2 :(得分:0)

首先:在删除大量记录之前创建备份:)

想法:

DELETE FROM
   table1
WHERE
   NOT EXISTS (SELECT 1 FROM table2 WHERE table1.referenceColumn = table2.referenceColumn)

您可以将DELETE替换为SELECT *

来检查要删除的记录

现在的解决方案

DELETE FROM
    table2
WHERE
    NOT EXISTS (
        SELECT 1 FROM
            table1
        WHERE
            table2.UserID = table1.UserID
            AND table2.DateTime = table1.DateTime
    )