mysql - 寻求一种快速更新包含重复值的记录的方法

标签 mysql sql

我有一个包含数百万条记录的表,但每个对象可能有多个共享相同值的列,而其他一些列具有不同的值。

示例:一个人有相同的电子邮件地址和相同的手机号码,但有不同的交易历史,这会在表中生成多条记录。

我想根据电子邮件地址和手机号码更新表格。由于多条记录具有相同的电子邮件地址和手机号码,因此更新后的列将得到相同的结果。

我的代码:

UPDATE person 
SET info = concat (email, mobile);

但是这段代码会有全表规模,并且一条一条更新记录,速度很慢,因为表规模很大。

请问是否有一种快速更新字段的方法,即使用聚合方法?

仅供引用,我在 MYSQL 8.0 工作台上工作。

最佳答案

本声明:

我想根据电子邮件地址和手机号码更新表格。由于多个记录具有相同的电子邮件地址和手机号码。

您似乎有未标准化的表

如果您想使用相同的电子邮件和相同的手机号码进行更新。您的更新重复添加了一堆相同的记录,并为您的数据库分配了大量空间和冗余数据。

我建议你为什么不为此创建另一个表?

例如:

您有以下记录

PersoneID1 email1 Mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1
PersoneID1 email1 mobile1

而不是创建四个email1 Mobile1

在新创建的表中:

它看起来就像只有一条记录:

PersoneID1 email1 Mobile1

关于mysql - 寻求一种快速更新包含重复值的记录的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139133/

相关文章:

jquery - Phonegap 跨平台应用获取外部数据

mysql - 如果我有很多用户、帖子、喜欢,如何组织对数据库的查询

php - 如何使用 PHP 或仅使用 MySQL 在 MySQL 中重命名重复项

Select 中的 SQL 内联条件

mysql - 根据条件过滤sql查询

sql - 选择更多行作为列

sql - MySQL 中的串联范围描述

java - 从servlet向mysql数据库添加数据

sql - 为每种类型的用户将登录名和密码放在一个表或多个表中?

sql - Node.js Sequelize findAll() 包含表模型的列