使用INNER JOIN更新设置案例?

时间:2012-05-23 00:12:53

标签: mysql sql

我正在尝试更新其中一个关系表中的字段。有问题的表是用户技能关系表。我想要更新的领域是熟练程度。

我在PHP中有一个数组,其中以技能名称为关键,以及熟练程度为值。

这是我正在运行的SQL语句。

UPDATE rus 
SET proficiency = CASE 
    WHEN ls.name = 'Objective-C' THEN 'Beginner' 
    END 
FROM rel_users_li_skills rus INNER JOIN li_skills ls ON ls.id = rus.skill_id 
WHERE rus.user_id = 3852

枚举PHP数组以在CASE语句中添加额外的WHEN ls.name = 'skill-name' THEN 'proficiency'语句。

我遇到的问题如下:

检查与您的MySQL服务器版本相对应的手册,以便在'FROM rel_users_li_skills rus INNER JOIN附近使用正确的语法li_skills ls ON ls.id = rus.skill_id WHE'在第1行

我很难过这个。我已经找到了几个SO帖子和论坛,它们似乎使用相同的语法并且没有任何问题。

2 个答案:

答案 0 :(得分:3)

MySQL中,与SQL Server不同,您无需在FROM中引用目标表:

UPDATE  rel_users_li_skills rus
JOIN    li_skills ls
ON      ls.id = rus.skill_id 
SET     proficiency = CASE WHEN ls.name = 'Objective-C' THEN 'Beginner' END 
WHERE   rus.user_id = 3852

答案 1 :(得分:1)

我通常使用这种格式。

UPDATE  rel_users_li_skills rus INNER JOIN li_skills ls
           ON ls.id = rus.skill_id 
   SET  proficiency = (CASE WHEN ls.name = 'Objective-C' THEN 'Beginner' END)
 WHERE  rus.user_id = 3852