乐闻世界logo
搜索文章和话题

How to delete a certain row from mysql table with same column values?

1 个月前提问
1 个月前修改
浏览次数25

1个答案

1

在MySQL中,如果我们需要删除具有相定列值的行,首先我们需要明确哪些列具有相同的值,以及是基于哪些条件进行删除。这里我将给出两个常见的场景和相应的SQL命令。

场景一:删除具有相同列值的所有重复行,只保留一个

假设我们有一个名为Employees的表,其中包含多列,其中一列名为EmployeeID。我们想要删除除了最小ID之外的所有具有相同EmployeeID的行。

我们可以使用以下SQL命令:

sql
DELETE e1 FROM Employees e1 JOIN Employees e2 WHERE e1.id > e2.id AND e1.EmployeeID = e2.EmployeeID;

这条命令的逻辑是这样的:

  • 我们从Employees表中选出两个别名为e1和e2的表。
  • 然后我们在WHERE子句中设置条件,只有当e1的id大于e2的id(这样可以确保对于每个EmployeeID我们只保留最小的id),并且它们的EmployeeID相等时,才会执行删除操作。

场景二:基于特定条件删除具有相同列值的行

假设我们还是使用同一个Employees表,现在我们需要删除所有EmployeeID为特定值(比如'12345'),并且其Status列为'Inactive'的行。

我们可以使用以下命令:

sql
DELETE FROM Employees WHERE EmployeeID = '12345' AND Status = 'Inactive';

这条命令比较直接,它会删除所有EmployeeID为'12345'且Status为'Inactive'的行。

通过这两个示例,您可以看到如何在MySQL中基于特定条件或基于重复值删除行。在执行这类操作时,建议先使用SELECT语句检查哪些行会被删除,以避免误删除重要数据。

2024年8月7日 00:29 回复

你的答案