2016-11-29 8 views
-1

を返した場合、私は2つのテーブルを持っている:LABELS表には、2つの列oldLabellabelを持っており、他のテーブルINVENTORYは、列LABELS.oldLabelの値を含む列labelを持っています。Updateまたはない列選択がレコード

INVENTORY.labelの値をLABELS.labelの値で更新したいとします。私が試した:SELECTが値を返さない場合は動作しますが、

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

、その後、INVENTORY.labelがnull値を取得します。上記のクエリを変更するにはどうすればよいですか?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

だけUPDATEにWHERE句を追加します。

UPDATE INVENTORY 
SET label = (SELECT ...) 
WHERE EXISTS (SELECT ...); 
関連する問題