2016-05-13 15 views
-2

Ich habe Tabelle Value_table und Spalte value I value Spalte als 'Hallo', wenn eine value Spalte existiert mit 'bye' Ich schrieb Abfrage aktualisieren müssenEffektive Update-Anweisung

UPDATE Value_table 
SET value = 'Hi' 
WHERE value_id 
IN 
(
    SELECT 
     value_id 
    FROM 
     Value_table 
    WHERE 
     value = 'bye' 
) 

Es funktioniert fine.Now seit Ich benutze die gleiche Tabelle in Unterabfrage können wir andere Wege machen, um diese Aussage effizienter zu machen.

+1

ist ein eindeutiger Schlüssel für die Tabelle value_id? Oder können Sie Beispieldaten bereitstellen? –

+0

Warum macht die Verwendung derselben Tabelle in einer Unterabfrage einen Unterschied? –

+0

@domnic: Du hast über 80 Fragen gestellt und gehst trotzdem die zweite weg, nachdem du eine Frage gestellt hast. Bitte bleiben Sie, um Kommentare in den ersten, wichtigsten Minuten einer Frage zu beantworten. –

Antwort

2

Wenn value_id einzigartig ist, können Sie tun

UPDATE Value_table 
SET value = 'Hi' 
WHERE value = 'bye' 
+0

warum ist das unten abgestimmt .....? – zee

+1

Ich habe nicht downvote, aber wahrscheinlich wegen 'Wenn irgendein Wert Spalte existiert mit 'tschüss'' – JamieD77

+0

Nein dies kann zu unterschiedlichen Ergebnis führen. –

1

Ich denke, wenn die Tabelle wirklich groß ist, könnte führen VORHANDEN besser.

UPDATE vt 
SET  vt.value = 'Hi' 
FROM Value_table vt 
WHERE EXISTS ( SELECT 1 
       FROM Value_table vt2 
       WHERE vt.value_id = vt2.value_id AND vt2.value = 'bye') 

if any value column exists with 'bye' wenn das bedeutet, die ID nicht übereinstimmt, können Sie entfernen den vt.value_id = vt2.value_id Teil

Verwandte Themen