2

リレーショナル テーブルの 1 つのフィールドを更新しようとしています。問題のテーブルは、ユーザーとスキルの関係テーブルです。更新しようとしているフィールドは、熟練度フィールドです。

スキルの名前をキー、習熟度を値とする 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

WHEN ls.name = 'skill-name' THEN 'proficiency'CASE ステートメントに余分なステートメントを追加するために、PHP 配列が列挙されます。

私が抱えている問題は次のとおりです。

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 に答える