2016-08-16 50 views
1

這將在下面將三個UPDATE語句到一個語句

UPDATE esys.sysacd 
SET sacd_menu_id='M3,M4,A1,E0,H1' 
WHERE sacd_id_no='40005' 
AND sacd_co_no='60' 
AND sacd_proj_cde='9'; 

UPDATE esys.sysacd 
SET sacd_menu_id='B2,M3,A1,E0,H1' 
WHERE sacd_id_no='20048' 
AND sacd_co_no='60' 
AND sacd_proj_cde='9'; 

UPDATE esys.sysacd 
SET sacd_menu_id='M3,M4,A1,E0,H1' 
WHERE sacd_id_no='170209' 
AND sacd_co_no='60' 
AND sacd_proj_cde='9'; 

我的更新語句,我可以結合我的更新語句?意味着我只想只做一次更新,而不是像我所做的那樣。因爲我只需要將H1添加sacd_menu_id。任何想法?

+1

SQL表中的逗號分隔值通常是一個壞主意。你應該規範你的模式。 – Barmar

+1

請不要編輯標題以包含「已解決」。接受答案將自動標記爲已解決。 – tadman

+0

好的。抱歉。我在這裏新手 –

回答

2

您可以使用CASE表達式。

UPDATE esys.sysacd 
SET sacd_menu_id = CONCAT(sacd_menu_id, ',H1') 
WHERE sacid_id_no IN ('40005', '20048', '170209') 
AND sacd_co_no = '60' 
AND sacd_proj_cde = '9' 
+0

有什麼辦法,我只能將H1添加到sacd_menu_id?例如,sacd_menu_id ='M3,M4,A1,E0'(在我的數據庫中)。我只想將H1添加到當前數據庫中,而不需要寫回sacd_menu_id ='M3,M4,A1,E0'。 –

+0

'sacd_menu_id = CONCAT(sacd_menu_id,',H1')' – Barmar

+0

它的工作原理。謝謝 –