如何构建SQL查询以删除我想要的内容。
我有两张桌子。 表格1。 ID:对此问题的一些随机不重要列:DateTime:UserID
表2。 ID:对此问题的一些随机不重要列:DateTime:UserID
这两个表与DateTime和UserID
相关无论如何,我可以创建一个查询,这样如果table1中的行没有匹配的DateTime&用户ID。
由于
答案 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
)