【发布时间】:2019-09-23 22:48:17
【问题描述】:
我在 mysql 数据库中有一个名为“电影”的表,它有同一部电影的多条记录。标识符是“APN”字段。
我正在尝试删除所有多行,但保留一条信息更完整的记录。
例如,在下面的记录中,我想删除前两行,但保留第三行,因为它包含更完整的信息,包括预告片 url。
+----+----------+---------+--------+-----------+
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 子句并说删除重复行吗?
【问题讨论】:
-
如果第一排有预告片,而第三排没有预告片,你会怎么做?哪个会被删除,哪个会保留?
-
如果尾部字段有值意味着它已被“触及”并且可以保留。
标签: mysql