0

我有一个棘手的查询需要帮助,我想知道是否可以在不创建临时表的情况下执行此操作。这是交易。

我有两个包含同一实体信息的表。一个包含标识符,另一个包含有关产品的文字标签。他们使用他们的 id 列加入。

表格1:

id    A       B 
----------------
1     12345   5  
2     123456  3       
3     12345   8   
4     12345   4 

表 2:

id    C       D 
----------------
1     cable   d  
2     iphone  c       
3     cable   b   
4     brick   a 

我想要实现的是删除具有相似列的重复项1A2C为了得到这样的东西:

表格1:

id    A       B 
----------------
1     12345   5  
2     123456  3       
4     12345   4 

表 2:

id    C       D 
----------------
1     cable   d  
2     iphone  c       
4     brick   a 

如您所见,问题是一旦我从其中一个表中删除了一个项目,我将无法再识别另一个表中的重复项。

我应该辞职以创建一个临时引用表,还是有一个很棒的方法来做到这一点?

4

1 回答 1

0

我不确定您的示例如何确定那里的内容是否重复(除了链接您示例中删除的行的 id 之外,我看不到任何其他内容),但是您可以一次从多个表中删除。

例如,如果您想从两个表中删除,如果 id 匹配并且表 1 中的 A 值与表 2 中 C 的值匹配:-

DELETE Table1, Table2 
FROM Table1 INNER JOIN Table2 
ON Table1.id = Table2.id
AND Table1.A = Table2.C

编辑-假设您要保留第一个并删除其他人,那么这样的事情应该可以完成:-

DELETE T1b, T2b
FROM Table1 T1a
INNER JOIN Table1 T1b
ON T1a.A = T1b.A
AND T1a.id < T1b.id
INNER JOIN Table2 T2a
ON T1a.id = T2a.id
INNER JOIN Table2 T2b
ON T1b.id = T2b.id
AND T2a.C = T2b.C
于 2013-11-05T10:37:49.927 回答