Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果select返回记录,是否更新列_Sql_Sqlite - Fatal编程技术网

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 ...);