删除一张表中与另一张表中相同的记录
Posted
技术标签:
【中文标题】删除一张表中与另一张表中相同的记录【英文标题】:DELETE records in one table that are the same records in another table 【发布时间】:2014-04-17 19:00:00 【问题描述】:我有一个 SSIS 包,它匹配某些列,并在报告来自供应商时将它们传输到“匹配”表中。
报告进来,数据被放入“传入”表中。在这之后。我加入某些列和某个列不为空的记录(匹配的列)并将它们放入“匹配”表中。
我的问题是这样的:
如何从我加入的表中删除匹配的记录?
以下是我要从“传入”表中删除的记录的联接语句:
SELECT * FROM Incoming I
LEFT OUTER JOIN Mathced M
ON I.Name = M.Name AND I.Type = M.Type AND I.Op = M.Op AND I.DSource = M.DSource AND IDate = M.Date
WHERE M.MatchedID IS NOT NULL
【问题讨论】:
【参考方案1】:试试这个:
DELETE FROM Incoming I
LEFT OUTER JOIN Mathced M
ON I.Name = M.Name
AND I.Type = M.Type
AND I.Op = M.Op
AND I.DSource = M.DSource
AND I.Date = M.Date
WHERE M.MatchedID IS NOT NULL
【讨论】:
谢谢...就是这么简单。我认为这可能是脚本,但我不想删除我不应该拥有的东西。 DELETE 关键字总是让我害怕。 我想我很快就谈过了。我在OUTER
和别名M
下得到红色波浪线
别害怕,运行查询即可。
看我之前的评论【参考方案2】:
DELETE FROM Incoming I
LEFT OUTER JOIN Mathced M
ON I.Name = M.Name AND I.Type = M.Type AND I.Op = M.Op
AND I.DSource = M.Source AND IDate = M.Date
WHERE M.MatchedID IS NOT NULL
【讨论】:
【参考方案3】:这是正确的答案:
DELETE I
FROM
Incoming I
LEFT OUTER JOIN Matched M
ON
I.Name = M.Name
AND I.Type = M.Type
AND I.Op = M.Op
AND I.DSource = M.DSource
AND I.Date = M.Date
WHERE M.MatchedID IS NOT NULL
......因为您首先必须告诉 DBMS 您要从哪个表中删除,然后使用别名声明 JOIN
【讨论】:
所有其他答案都会给你带来波浪。以上是关于删除一张表中与另一张表中相同的记录的主要内容,如果未能解决你的问题,请参考以下文章