2012-08-06 39 views
0

我想在MySQL中使用大小寫更新語句,但它不會更改任何值。在同一個字段上使用大小寫更新值

該查詢不會給出任何錯誤,但有0個受影響的行。

UPDATE `tablename` 
SET `type` = (
    CASE 
     WHEN `type` = 1 THEN 1 
     WHEN `type` = 2 THEN 2 
     WHEN `type` = 3 THEN 19 
     WHEN `type` = 4 THEN null 
     WHEN `type` = 5 THEN null 
     WHEN `type` = 6 THEN 81 
     WHEN `type` = 7 THEN null 
     WHEN `type` = 8 THEN 22 
     WHEN `type` = 9 THEN 21 
     WHEN `type` = 10 THEN 78 
     WHEN `type` = 11 THEN 80 
     WHEN `type` = 12 THEN 79 
    END) 
WHERE user_id IS NOT NULL; 

任何人都知道我可以解決這個問題。

+0

如果使用select語句,會返回任何記錄嗎? – sel 2012-08-06 09:11:14

回答

0

嘗試移動typeCase

UPDATE `tablename` 
SET `type` = 
    CASE `type` 
     WHEN 1 THEN 1 
     WHEN 2 THEN 2 
     WHEN 3 THEN 19 
     WHEN 4 THEN null 
     WHEN 5 THEN null 
     WHEN 6 THEN 81 
     WHEN 7 THEN null 
     WHEN 8 THEN 22 
     WHEN 9 THEN 21 
     WHEN 10 THEN 78 
     WHEN 11 THEN 80 
     WHEN 12 THEN 79 
    END 
WHERE user_id IS NOT NULL; 
+0

這沒有幫助,仍然是0受影響的行。所有的值都是一樣的。 – 2012-08-06 09:09:59

+0

即使你刪除了'parethesis'? – 2012-08-06 09:13:55

0
UPDATE test 
SET `password` = (
CASE 
    WHEN `password` = 1 THEN 'one' 
    WHEN `password` = 2 THEN 'two' 
    WHEN `password` = 3 THEN 'three' 
    WHEN `password` = 4 THEN null 
    WHEN `password` = 5 THEN null 
    WHEN `password` = 6 THEN 81 
    WHEN `password` = 7 THEN null 
END) 
where userindex=1 

工作完全正常,我。我manuplated它適合我的測試數據..kindly remanuplate值,然後再試一次。

還檢查您是否有任何用戶不爲空user_id

0

查詢看起來不錯。建議使用select來嘗試是否會返回任何記錄。

SELECT *, CASE 
     WHEN `type` = 1 THEN 1 
     WHEN `type` = 2 THEN 2 
     WHEN `type` = 3 THEN 19 
     WHEN `type` = 4 THEN null 
     WHEN `type` = 5 THEN null 
     WHEN `type` = 6 THEN 81 
     WHEN `type` = 7 THEN null 
     WHEN `type` = 8 THEN 22 
     WHEN `type` = 9 THEN 21 
     WHEN `type` = 10 THEN 78 
     WHEN `type` = 11 THEN 80 
     WHEN `type` = 12 THEN 79 
    END as test 
FROM `tablename` WHERE user_id IS NOT NULL 
相關問題