2011-11-29 47 views
5

Tôi đã tìm kiếm giải pháp nhưng chưa tìm thấy giải pháp nào hoạt động ...truy cập cập nhật truy vấn sql nhiều giá trị

Tôi đang cố gắng cập nhật nhiều giá trị trong cột dựa trên các giá trị khác biệt trong một cột khác . Ví dụ:

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

Tôi đã thử này không có thành công:

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

Hiện có hàng ngàn mà không cần cập nhật như vậy, tất nhiên, tôi muốn chạy này trong một truy vấn cập nhật duy nhất.

Tôi đang thiếu gì? Tôi đang làm gì sai?

Cảm ơn!

+2

của bạn 'truy vấn vẻ UPDATE' sau khỏe. Mô tả "Tôi đã thử điều này không thành công". Chuyện gì đã xảy ra? –

+1

CASE chỉ có thể được sử dụng trong VBA, không phải trong Truy vấn MS Access. –

Trả lời

7

Khi truy cập, bạn có thể sử dụng chức năng SWITCH. Câu lệnh CASE không hoạt động.

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

Tuy nhiên nếu bạn có quá nhiều mặt hàng bạn có thể muốn tạo một bảng Mapping ai là dữ liệu trông giống như

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

Và sau đó thực hiện

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

Rực rỡ! Cảm ơn bạn! –

+0

Điều này hoạt động rất tốt. Tôi đã xuất bảng, sử dụng Excel để nối các trường theo định dạng của mã và đưa nó trở lại làm truy vấn cập nhật của tôi. Thật là một tiết kiệm thời gian rất lớn! Cảm ơn bạn vì món quà này! ~ kern –

+0

Ồ không ... :) SWITCH làm việc tuyệt vời cho tập đầu tiên của tôi, tuy nhiên nó đưa ra một "biểu hiện quá phức tạp" lỗi nếu tôi sử dụng hơn 15 mục ... Làm thế nào tôi có thể thực hiện điều này? –

Các vấn đề liên quan