2017-09-12 90 views
1

enter image description here如何在MySQL更新新增的列

我添加了一個新欄目「時間」和我想更新該列。我寫了下面的代碼,但沒有工作。以下代碼的問題是什麼?

UPDATE OFFICER 
SET HOURS=5 AND HOURS=4 AND HOURS=4 AND HOURS=3 
WHERE NAME IN('KASUN','MANEL','LALA'); 
+1

單獨列項你使用MySQL或MS SQL Server?不要標記不涉及的產品。 – jarlh

+1

不要嘗試多次設置相同的列。 – jarlh

+0

你能更好地描述你的更新邏輯嗎? –

回答

3

如果你只是想正是這些值來填充新列,你可以使用一個UPDATECASE WHEN,如:

UPDATE OFFICER 
    SET HOURS = CASE WHEN NAME = 'KASUN' THEN 5 
        WHEN NAME = 'MANEL' THEN 4 
        WHEN NAME = 'LALA' THEN 3 
       END 
WHERE NAME IN('KASUN','MANEL','LALA'); 
; 


如果你想填充與行隨機數,你可以只產生這樣一個隨機數:

UPDATE OFFICER 
    SET HOURS = ABS(Checksum(NewID()) % 6) + 1 
WHERE NAME IN('KASUN','MANEL','LALA'); 
; 

ABS(Checksum(NewID()) % 6) + 1將產生1和6

0

你不能在同一時間,你可以爲一個列設置多個值,只需設置一個值,這樣

UPDATE OFFICER SET HOURS = 5 
WHERE NAME IN('KASUN','MANEL','LALA'); 
+0

感謝E-housma Mardini!當我一次添加1列時它就起作用了。謝謝。你知道我們如何一次添加所有列嗎? –

+0

我的朋友你不能設置多個值到同一個字段 –

1

之間的隨機數你猜怎麼着,我想你可能需要CASE WHEN

UPDATE OFFICER 
SET HOURS = CASE WHEN NAME = 'KASUN' THEN 5 
       WHEN NAME = 'MANEL' THEN 4 
       WHEN NAME = 'LALA' THEN 3 
       ELSE HOURS 
      END; 
+0

它工作!謝謝。我想我需要更多地使用「CASE」:-D –

1

如果會有條件意味着您可以根據條件設置多個值,例如:。。。。。。

UPDATE OFFICER SET HOURS = CASE WHEN NAME= 'KASUN' THEN 5 
        WHEN NAME= 'MANEL' THEN 4 
        WHEN NAME= 'LALA' THEN 3 END WHERE NAME IN('KASUN','MANEL','LALA'); 

其他明智的,你可以像如下─

UPDATE OFFICER SET HOURS=5 WHERE NAME='KASUN'; 

    UPDATE OFFICER SET HOURS=4 WHERE NAME ='MANEL'; 

    UPDATE OFFICER AND HOURS=3 WHERE NAME='LALA';