我有一张这样的table:
Id Name ProductId
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 is null
如果是的话 Name
is发生多次。
在本例中,如果我运行适当的delete查询,它应该删除以下行:
2 Apple null
8 Lemon null
哪种删除查询对我有效?
2条答案
按热度按时间33qvvth11#
我建议在加入之前使用聚合或类似的方法:
这比没有聚合的自连接要好得多。为什么?因为每一行都只标识一次。在示例数据中,没有聚合的自联接尝试删除行id=2两次(一次用于1的匹配,一次用于3的匹配)。那是不必要的。如果
name
有许多行。我还认为,你不只是想要一个cnt的2,但你想要一个非-
NULL
产品id,即:这是一把小提琴。
bvk5enib2#
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=e58dc760d30bfaec4e46be7c80729200