为什么在尝试使用mysql-query更新属性时会出现此语法错误?

时间:2011-05-15 23:23:04

标签: mysql sql mysql-error-1064

我正在尝试使用以下mysql查询更新'Goal'表的'pwd'列,但令人遗憾的是它给出了错误。 mysql查询:

UPDATE Goal 
   SET pwd = (SELECT MD5(CONCAT(ID, LEFT(phone,3), '$=')) 
                FROM Esubmission);

错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在第1行的“FROM Esubmission”附近使用正确的语法

我的表格如下;

Esubmission
ID        | pnone       | email            |
--------------------------------------------
20378     | 00000000000 | someone@gmail.com|
20379     | 00000000000 | someone@gmail.com|
20380     | 00000000000 | someone@gmail.com|

Goal
usr   | pwd | time|
--------------------
20378 |     |12:09|
20379 |     |15:29|
20380 |     |15:47|

2 个答案:

答案 0 :(得分:2)

嗯....我想你真的想为每个用户设置密码(我认为),在这种情况下你需要加入更新,这样你就可以消除你的您选择的多个值..因为您拥有它的方式,您将目标表中pwd的所有值更新为相同的值...以下方式,您将每个用户pwd更新为基于所加入的行带有身份证。假设在esubmission表中每个usr都有一行,这应该有效:


UPDATE Goal    
SET pwd = MD5(CONCAT(ID, LEFT(e.phone,3), '$='))                 
FROM Goal g, Esubmission e
where e.ID = g.usr

答案 1 :(得分:0)

我在这里测试过并且工作正常。 MySQL 5.1.37