2016-11-29 2 views
-1

zurück habe ich zwei Tabellen: LABELS Tabelle hat zwei Spalten oldLabel und label und die andere Tabelle INVENTORY hat eine Spalte label die LABELS.oldLabel die Werte der Spalte enthält.Update oder keine Spalte, wenn wählen Sie einen Datensatz

Ich möchte die Werte der Spalte INVENTORY.label mit den Werten LABELS.label aktualisieren. Ich habe versucht:

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

, das funktioniert, aber wenn die SELECT keinen Wert zurück, dann die INVENTORY.label bekommt einen Nullwert. Wie kann ich die obige Abfrage ändern, wenn also die SELECT keinen Datensatz zurückgibt, aktualisieren Sie diesen Datensatz nicht!

fand ich eine Art und Weise, die ich einige .. JAVA Implementierung verwenden

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(); 
} 

Allerdings kann ich dies tun, mit SQL-Code nur?

Antwort

0

Fügen Sie einfach eine WHERE-Klausel der UPDATE:

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