2011-11-29 11 views
5

。たとえば:アクセス更新クエリのSQL複数の値

If status = F05 then statusID = 987 
If status = F12 then statusID = 12957 

ノー成功でこれを試してみた:

UPDATE myTable 
SET statusID = CASE status 
    WHEN 'F05' THEN 987 
    WHEN 'F12' THEN 12957 
END 

ので、更新する必要がある何千もありますが、もちろん、私は、単一の更新クエリでこれを実行したいと思います。

私には何が欠けていますか?私は間違って何をしていますか?

ありがとうございます!

+2

あなた 'UPDATE'クエリのルックスを行います良い。 「私はこれを成功なしで試しました」と説明してください。何が起こった? –

+1

CASEはVBAでのみ使用でき、MS Accessクエリでは使用できません。 –

答えて

7

アクセスではSWITCH機能を使用できます。 CASEステートメントは機能しません。

UPDATE myTable 
SET statusID = 
SWITCH 
    ([status] = 'F05', 987, 
    [status] = 'F12', 12957) 

しかし、あなたはあまりにも多くのアイテムを持っている場合は、データが

OldStatus | NewStatus 
--------------------- 
F05  | 987 
F12  | 12957 

のように見えるのですマッピングテーブルを作成することができますし、次の

UPDATE 
     myTable 
     INNER JOIN Mapping ON myTable.Status = Mapping.OldStatus 
SET 
     myTable.Status = Mapping.NewStatus; 
+0

ブリリアント!ありがとうございました! –

+0

これは非常にうまくいっています。私はテーブルをエクスポートし、Excelのコードの形式でフィールドを連結するために使用し、私の更新クエリとしてそれを持ってきました。どのような巨大な時間節約!この贈り物ありがとう! 〜kern –

+0

ああ... :) SWITCHは私の最初のセットではうまくいきましたが、15個以上のアイテムを使用すると「表現が複雑すぎます」というエラーが表示されます。 –