2016-11-29 27 views
-1

我有兩個表:LABELS表有兩列oldLabellabel和其他表INVENTORY具有包含列LABELS.oldLabel的值的列label更新或者不列,如果選擇返回記錄

我想用LABELS.label的值更新列INVENTORY.label的值。我想:

UPDATE INVENTORY 
SET label = (SELECT label FROM LABELS AS T2 WHERE T2.oldLabel = INVENTORY.label); 

其作品,但如果SELECT沒有返回值,則INVENTORY.label得到一個空值。如何更改上述查詢,因此當SELECT未返回記錄時,請不要更新該記錄!

我找到了一個方法,我用一些JAVA實現..

sq = "UPDATE INVENTORY " 
     + "SET label = ? WHERE label = ?"; 
stm = c.prepareStatement(sq); 

for (Label label : labels) { //labels is an arrayList which contains both values 
    stm.setString(1, label.getLabel()); 
    stm.setString(2, label.getOldLabel()); 

    result = stm.executeUpdate(); 
} 

不過,我能做到這一點,只有SQL代碼?

回答

0

只需添加一個WHERE子句的UPDATE:

UPDATE INVENTORY 
SET label = (SELECT ...) 
WHERE EXISTS (SELECT ...);