更新或者不列,如果选择返回记录
问题描述:
我有两个表:LABELS
表有两列oldLabel
和label
和其他表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 ...);