繁体   English   中英

如果MySQL中的另一个表中存在行,则从一个表中删除行

[英]Deleting rows from one table if row exists in another table in MySQL

我正在从旧的培训跟踪系统迁移数据,我正在使用MySQL格式化新培训跟踪系统的数据。

我有一个包含550万行的表,它是旧系统的主数据集。 我还有一个大约49,000行的表,之前已经迁移过了。

我要做的是比较两个表并从主数据文件中删除以前迁移的记录(我不想在新系统中创建重复记录。)

为了比较,我需要比较3个字段(employee_id,course_code和completion_date。)我使用以下SQL语句,但它只是坐着旋转。 我不知道它是否有效,只是花了很长时间,或者它是否真的不起作用。

DELETE master_data.*
FROM master_data
INNER JOIN alreadyMigrated
ON master_data.employee_id = alreadyMigrated.employee_id 
AND master_data.course_code = alreadyMigrated.course_code
AND master_data.completion_date = alreadyMigrated.completion_date;

我也不知道索引是否会有所帮助。 任何帮助,将不胜感激。 谢谢。

你只需要指定表名,而不是列。

DELETE master_data
       FROM master_data
       INNER JOIN alreadyMigrated
          ON master_data.employee_id = alreadyMigrated.employee_id AND 
             master_data.course_code = alreadyMigrated.course_code AND 
             master_data.completion_date = alreadyMigrated.completion_date;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM