MySQL按错误分组更新

MySQL按错误分组更新,mysql,Mysql,当前我有3个帐户使用相同的电子邮件地址,我想通过group by函数为相同的电子邮件地址提供哈希键。正在运行的sql语句是 UPDATE customers ( SELECT customer_id, email, email_hash FROM customers GROUP BY email) AS t1 SET email_hash='123' WHERE email='abc@abc.com' 当我运行这个sql查询时,我得到了这个错误 #1064 - You have

当前我有3个帐户使用相同的电子邮件地址,我想通过group by函数为相同的电子邮件地址提供哈希键。正在运行的sql语句是

UPDATE customers (
    SELECT customer_id, email, email_hash FROM customers GROUP BY email) AS t1
    SET email_hash='123' WHERE email='abc@abc.com'
当我运行这个sql查询时,我得到了这个错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(select customer_id, email, email_hash, email_reg_status from customers group by' at line 1

使用group by函数为相同的电子邮件地址插入相同的哈希键,我能做些什么呢?

如果我知道您已更正,您只需

update customers set email_hash='123' where email='abc@abc.com';

因为
email\u id
对所有客户都是相同的;如果您喜欢下面的内容,那么您的所有客户记录在
电子邮件\u散列中都将具有相同的值

update customers set email_hash='123' where email='abc@abc.com';
我假设至少您的
customer\u id
字段是唯一的。在这种情况下,为什么不直接通过
客户id
进行更新,这是唯一的,如下所示

UPDATE customers SET email_hash='123' WHERE customer_id=<some_id_value>
更新客户设置电子邮件\u hash='123',其中客户id=

我认为这不可行,因为我的
客户
表具有相同的电子邮件地址,并且我希望在同一电子邮件中插入相同的
哈希键
。我的查询将更新包含该电子邮件的所有行,而不仅仅是一行。更新就是这样工作的。信息存在于我的表中,我刚刚为表创建了一个新字段,我是
循环
,以生成所有哈希键。是的。您需要填充电子邮件\u散列的新空字段。此查询将更新电子邮件为'abc@abc.com'改为'123'。这可能就是你想要的。如果没有,请更新问题以更好地解释。对于散列键,我使用
md5
生成not input own散列键。因此,我不知道我将为哪个帐户生成哪个哈希键。您无法更新从中选择的表。实际上,我是在
循环
语句中执行此操作的,因为我刚刚为数据库表创建了一个新字段。在这种情况下,使用
游标
并为每个
客户id
更新您的
哈希
值。