Mysql 是否使用内部联接更新集合大小写?
我正在尝试更新一个关系表中的字段。该表是一个用户技能关系表。我试图更新的字段是熟练程度字段 我有一个PHP数组,以技能名称为键,熟练程度为值 下面是我正在运行的SQL语句Mysql 是否使用内部联接更新集合大小写?,mysql,sql,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.s
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
在CASE语句中,当ls.name='skill name'然后是'proficiency'语句时,PHP数组被枚举,以添加额外的
我遇到的问题如下:
查看与您的MySQL服务器版本对应的手册,以了解第1行的“来自关系用户\u li\u skills rus internal JOIN li\u skills ls ON ls.id=rus.skill\u id WHE”附近使用的正确语法
我在这件事上被难住了。我已经发现一些SO帖子和论坛似乎使用了相同的语法并且没有问题。在MySQL
中,与SQL Server
不同,您不需要从中引用目标表:
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
在MySQL
中,与sqlserver
不同,您不需要从中引用中的目标表:
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
我通常使用这种格式
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
我通常使用这种格式
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
您的示例失败了吗?还是仅仅是PHP生成的代码?@web\u bod通过mysql控制台运行的同一查询引发了相同的错误。PHP正在生成我希望使用的查询。这是sql server使用的语法(检查标记),但是我没有使用它,所以我不确定它到底是如何编写的。您的示例失败了吗,还是仅仅是PHP生成的代码?@web\u bod通过mysql控制台运行的同一查询引发了相同的错误。PHP正在生成我希望使用的查询。这是sql server使用的语法(检查标记),但是我没有用它,所以我不确定它到底是怎么写的。@birarda:在和现在一样的地方。@birarda:在和现在一样的地方。