我在mysql数据库中有一个名为“Movies”的表格,其中同一部电影可能有多条记录。标识符是“APN”字段。
我想删除所有重复行,但保留具有更完整信息的记录。
例如,在下面的记录中,我想删除前两行,但保留第三行,因为它具有更完整的信息,包括预告片网址。
如果我使用以下查询,它将只删除具有较低 ID 的重复内容。
我想删除所有重复行,但保留具有更完整信息的记录。
例如,在下面的记录中,我想删除前两行,但保留第三行,因为它具有更完整的信息,包括预告片网址。
+----+----------+---------+--------+-----------+
Id APN Title Genre Trailer
+----+----------+---------+--------+------------+
1 1234567 TinTin NULL NULL
2 1234567 TinTin Fiction NULL
3 1234567 TinTin Fiction http://youtube.xyz
+---------------------------------------------------
如果我使用以下查询,它将只删除具有较低 ID 的重复内容。
DELETE m1 FROM movies m1
INNER JOIN movies m2
WHERE m1.id < m2.id AND m1.apn = m2.apn;
如果某些列为空,我能否在查询中使用where子句并删除重复行?