mysql删除并保留在其他表中使用的一个

xtfmy6hx  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(409)

我有两个mysql表:
表1

ID NOMOR_LOGO
1 ABC
2 ABC
3 ABC
4 DEF
7 GHI
8 GHI

表2

ID ID_NOMOR_LOGO
1 1
2 5
3 6

table1.id=table2.id\u nomor\u logo
删除表1中的重复数据,只保留表2中使用的数据
如果重复数据与表2没有关联,则删除所有数据并保留1个数据(任何数据,可能具有最低id)
如果table1.nomo或\u logo中没有重复项,请不要删除此数据
结果应该是这样的

ID NOMOR_LOGO
1 ABC
4 DEF
7 GHI

谢谢您

shyt4zoc

shyt4zoc1#

将第一个表与其自身连接以标识重复项,并将第二个表连接以不删除其中存在的行。

DELETE a 
FROM table1 a
JOIN table1 b ON  a.nomor_logo = b.nomor_logo AND a.id > b.id
JOIN table2 C ON a.id != c.id_nomor_logo;
t9aqgxwy

t9aqgxwy2#

请注意,这假设:
1) 表之间的关系是: Table 1.ID = Table 2.ID_NOMOR_LOGO 2) Table 1.ID 是独一无二的
3) 如果中有重复数据 Table 1 中没有对应行 Table 2 ,中的所有重复行 Table 1 将被删除。

DELETE t1 FROM Table1 t1
        INNER JOIN
   Table1 t2 
   WHERE
   t1.id <> t2.id AND t1.NOMOR_LOGO = t2.NOMOR_LOGO
   AND
   NOT EXISTS (SELECT 1 FROM Table2 WHERE Table2.ID_NOMOR_LOGO = t1.ID);

相关问题