如何根据其他条件从表中删除多行?

如何根据其他条件从表中删除多行?

我有一张这样的桌子:


1   Apple    1
2   Apple    null
3   Apple    2
4   Orange   1
5   Orange   2
6   Pear     null
7   Lemon    1
8   Lemon    null

如果 ProductId 为空并且 Name 出现多次,我想删除该行。

在此示例中,如果我运行正确的删除查询,它应该删除以下行:

2   Apple    null
8   Lemon    null

哪种删除查询对我有用?

答案1

根据 SQL 引擎的功能,您可能能够运行以下命令:

Delete from Products PID where ProductId is null and
  exists(select * from Products where Name=PID.Name and ProductId is not null)

否则,您将需要为 ProductId 不为空的产品创建临时表或视图。

相关内容