Sql 如果select返回记录,是否更新列
我有两个表:Sql 如果select返回记录,是否更新列,sql,sqlite,Sql,Sqlite,我有两个表:LABELS表有两列oldLabel和label,另一个表INVENTORY有一列label,其中包含列LABELS.oldLabel的值 我想用LABELS.label的值更新列INVENTORY.label的值。我试过: UPDATE INVENTORY SET label = (SELECT label FROM LABELS AS T2 WHERE T2.oldLabel = INVENTORY.label); 如果选择没有返回值,则INVENTORY.label将获得空值
LABELS
表有两列oldLabel
和label
,另一个表INVENTORY
有一列label
,其中包含列LABELS.oldLabel
的值
我想用LABELS.label
的值更新列INVENTORY.label
的值。我试过:
UPDATE INVENTORY
SET label = (SELECT label FROM LABELS AS T2 WHERE T2.oldLabel = INVENTORY.label);
如果选择
没有返回值,则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 INVENTORY
SET label = (SELECT ...)
WHERE EXISTS (SELECT ...);