我有一个 SQL 数据库,它在工作流中获取项目,然后在它们移动到下一个位置时添加它们的新记录(非常糟糕的设计,我知道......我没有做到)。但例如:
编号 |职位 |地点
1 |福特 |计费
2 |福特 |已发货
3 |福特 |交付
4 |道奇 |订购
5 |雪佛兰 |订购
所以对于这个例子,我想搜索 LOCATION 是“已交付”的任何记录,Ford 会匹配该记录,然后删除 JOB 是 Ford 但 LOCATION 未“已交付”的所有其他记录。
由于其设置方式,此数据库中有超过 93,000 条记录。因此,我正在尝试清除它,希望能加快前任员工为我现在工作的公司编写的自定义应用程序的速度。
最佳答案
您可以使用多表 DELETE
语法来执行自连接:
DELETE a
FROM myTable a JOIN myTable b USING (job)
WHERE b.location = 'delivered'
AND a.location != 'delivered'
关于mysql - 如何根据多列和条件对记录进行排序和删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34682523/