更新或者不列,如果选择返回记录

更新或者不列,如果选择返回记录

问题描述:

我有两个表: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代码?

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

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