首页  >  文章  >  数据库  >  如何根据订阅者电子邮件删除重复行,同时保留最旧的提交?

如何根据订阅者电子邮件删除重复行,同时保留最旧的提交?

Linda Hamilton
Linda Hamilton原创
2024-11-03 15:10:30539浏览

How do I remove duplicate rows based on subscriberEmail while keeping the oldest submission?

删除重复行,同时保留最旧的提交

要根据subscriberEmail字段消除重复行,同时保留原始提交,请按照以下步骤操作:

<code class="sql">delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id;</code>

解释:

  • 此查询使用 join 子句将表与自身连接起来。这将创建表的两个实例,别名为“x”和“z”。
  • where 子句比较两个实例的 id 值。实例“x”中 id 大于实例“z”中相应行的行表示重复提交。
  • 删除语句识别实例“x”中的这些重复行并将其从表中删除。
  • 结果是一个包含唯一订阅者电子邮件的表格,其中每个电子邮件地址仅保留原始提交(具有最低 ID)。

附加说明:

  • 为了防止将来出现重复,请考虑在subscriberEmail 列上创建一个UNIQUE 索引。
  • 上面的查询可以通过组合join 和where 子句来简化:
<code class="sql">delete x
from myTable x
join myTable z
on x.subscriberEmail = z.subscriberEmail and x.id > z.id;</code>

以上是如何根据订阅者电子邮件删除重复行,同时保留最旧的提交?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn