2014-02-28 92 views
0

當前我有3個帳戶使用相同的電子郵件地址,我想給一組功能的同一個電子郵件地址的散列鍵。運行的SQL語句是MySQL錯誤更新羣組

UPDATE customers (
    SELECT customer_id, email, email_hash FROM customers GROUP BY email) AS t1 
    SET email_hash='123' WHERE email='[email protected]' 

當我運行這個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 

我能做些什麼使用按功能分組相同的哈希鍵爲相同的電子郵件地址?

+0

你不能更新你從中選擇一個表。 –

回答

1

如果我理解你糾正所有你需要做的是

update customers set email_hash='123' where email='[email protected]'; 
+0

我不認爲這可以工作,因爲我的「客戶」表具有相同的電子郵件地址,我想將相同的「散列鍵」插入到同一封電子郵件中。 –

+0

我的查詢將更新所有具有該電子郵件的行,而不僅僅是一個。更新以這種方式工作。 –

+0

數據庫已經存在 –

0

由於email_id是同樣爲所有客戶;如果你像下面那麼所有客戶記錄將具有相同的價值email_hash

update customers set email_hash='123' where email='[email protected]'; 

我認爲至少你customer_id領域是獨一無二的。在這種情況下,爲什麼不只是更新customer_id這是獨特的如下

UPDATE customers SET email_hash='123' WHERE customer_id=<some_id_value> 
+0

其實我在'loop'語句中這樣做,因爲我剛剛爲我的數據庫表創建了一個新字段。 –

+0

在這種情況下,使用'cursor'併爲每個'customer_id'更新'hash'值。 – Rahul