mysql - 如何用空白替换重复的列值而不删除 MySql 中的整行?

标签 mysql unique-key

我有一个mysqlcontacts如下

id  |      email      |   mobile    |
1   | abc123@xyz.com  |  9800000023 | 
2   | abc123@xyz.com  |  9800000021 |
3   | pqr111@xyz.com  |  9800000034 |
4   | pqr123@xyz.com  |  9900000033 |
5   | abc111@xyz.com  |  9804400000 |
6   | pqr111@xyz.com  |  9800500000 |
7   | abc111@xyz.com  |  8600000000 |

我想要将重复的电子邮件值(第一次出现除外)更新为 null 或空白,而不影响 mobile 列。

解决方案应该如下所示

id  |      email      |   mobile    |
1   | abc123@xyz.com  |  9800000023 | 
2   |    <null>       |  9800000021 |
3   | pqr111@xyz.com  |  9800000034 |
4   | pqr123@xyz.com  |  9900000033 |
5   | abc111@xyz.com  |  9804400000 |
6   |    <null>       |  9800500000 |
7   |    <null>       |  8600000000 |

有没有办法忽略重复的电子邮件列值,但应将移动值插入表中。

最佳答案

update contacts
set email = null
where id not in
(
   select * from
   (
      select min(id)
      from contacts
      group by email
   ) tmp
) 

关于mysql - 如何用空白替换重复的列值而不删除 MySql 中的整行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38732320/

相关文章:

MySQL - 如何选择 'DISTINCT' 重叠周期(日期或数字范围)

MySQL - 使一对值唯一

mysql - 我可以在 MySQL 中填充一个表而不会以重复的条目结束吗

primary-key - 黑白主键和唯一键有什么区别

php - 如何使用单个发布的参数来运行 BETWEEN 或 IN(从表中选择参数)类型查询?

mysql - 找出昨天和今天之间出勤率下降最大的 SQL

mysql - sql - UNION ALL 和另一侧的内连接

jquery - 获取文本区域或文本编辑器的值

MySQL 两列唯一键

r - 如何防止索引/键重复的行附加到data.frame?