2

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

我在 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 服务器版本相对应的手册,以在第 1 行的“FROM rel_users_li_skills rus INNER JOIN li_skills ls ON ls.id = rus.skill_id WHE”附近使用正确的语法

我被这个难住了。我已经发现了一些似乎使用相同语法并且没有问题的 SO 帖子和论坛。

4

2 回答 2

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
于 2012-05-23T00:24:23.670 回答
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
于 2012-05-23T00:29:55.217 回答