Mysql 从两个表中删除两列重复项,每个表上删除一列

Mysql 从两个表中删除两列重复项,每个表上删除一列,mysql,sql,join,duplicates,sql-delete,Mysql,Sql,Join,Duplicates,Sql Delete,我有一个棘手的查询需要帮助,我想知道是否可以不创建临时表就完成它。事情是这样的 我有两个表,其中包含同一实体的信息。一个包含标识符,另一个包含产品的文字标签。它们使用其id列进行连接 表1: id A B ---------------- 1 12345 5 2 123456 3 3 12345 8 4 12345 4 id A B ---------------- 1 12

我有一个棘手的查询需要帮助,我想知道是否可以不创建临时表就完成它。事情是这样的

我有两个表,其中包含同一实体的信息。一个包含标识符,另一个包含产品的文字标签。它们使用其id列进行连接

表1:

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

id    C       D 
----------------
1     cable   d  
2     iphone  c       
3     cable   b   
4     brick   a 
id    C       D 
----------------
1     cable   d  
2     iphone  c       
4     brick   a 
我试图实现的是删除具有类似列的重复项,以获得如下内容:

表1:

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

id    C       D 
----------------
1     cable   d  
2     iphone  c       
3     cable   b   
4     brick   a 
id    C       D 
----------------
1     cable   d  
2     iphone  c       
4     brick   a 
正如您所看到的,问题在于,一旦我从其中一个表中删除了一项,我就无法再识别另一个表中的重复项


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

我不知道从您的示例中,您是如何决定是否存在重复的内容的(在您的示例中,除了链接删除的行的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
删除T1b、T2b
来自表1 T1a
内连接表1 T1b
关于T1a.A=T1b.A
和T1a.id
我正在尝试删除两个表中id相同、各自表中列相似的重复项,例如:除我的情况外,这两列位于不同的表中。那么您如何决定删除哪一个重复项?也就是说,对于表1,有3行A的值为12345,那么为什么保留id 1和id 4,为什么选择删除id 3?还是因为cols C也匹配?在这种情况下,为什么保留1,删除3?只是因为1的ID较小吗?