2011-11-29 148 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

Oh no ... :) SWITCH對我的第一套很棒,但是如果我使用超過15個物品,它會給出「表情太複雜」的錯誤......我該如何表演呢? –