2017-05-29 2 views
0

Ich habe die folgende Tabelle:aktualisieren einzelne Spalt mit mehreren Werten SQL

Ich brauche die Tabelle zu aktualisieren und Werte in dem Spalte Code einzufügen. Ich habe den Code

UPDATE mytable 
SET code= 
    CASE id 
     WHEN 1 THEN 'ASD' 
     WHEN 2 THEN 'FGH' 
     WHEN 3 THEN 'JKL' 
     WHEN 4 THEN 'QWE' 
     WHEN 5 THEN 'BAR' 
    END 
WHERE id IN (1,2,3,4,5); 

Kann ich dies in einer einzigen Abfrage durchführen, wie ich 14.000 Datensätze zu aktualisieren. Danke!

+0

Sie haben bereits einzelne Abfrage geschrieben, was möchten Sie tun? –

+0

ist es bereits einzelne Abfrage – Vecchiasignora

+0

Wenn ich 14.000 Spalten anstelle von 5 Spalte aktualisieren muss, muss ich eine lange Abfrage schreiben. Was, wenn wir irgendeinen Wert in "Code" einfügen können. Es muss nicht angegeben werden. genauer gesagt können wir den Code mit 'ASD' oder 'FGH' entweder auf ID = 1 –

Antwort

0

Verwenden UPDATE Abfrage im folgende Format:

UPDATE mytable SET code = CASE WHEN id = 1 THEN 'ASD' 
           WHEN id = 2 THEN 'FGH' 
           WHEN id = 3 THEN 'JKL' 
           WHEN id = 4 THEN 'QWE' 
           WHEN id = 5 THEN 'BAR' ELSE code END 
+0

Was ist der Unterschied zwischen Ihrer Abfrage und den OP's? – Wanderer

+0

@Wanderer, keine WHERE-Anweisung –

+0

@Mansoor, schlechte Idee ... was wird für Datensatz mit ID = 6 gesetzt? –

0

Ich denke, das, was Sie brauchen

UPDATE mytable 
SET code= 
CASE round(rand()*5) 
    WHEN 1 THEN 'ASD' 
    WHEN 2 THEN 'FGH' 
    WHEN 3 THEN 'JKL' 
    WHEN 4 THEN 'QWE' 
    WHEN 5 THEN 'BAR' 
    WHEN 0 THEN 'ASD' 
END 
0

erstellen CSV Datei mit Spalten id und code. Und dann importieren Sie das CSV in eine temporäre Tabelle.

Abfrage

create temporary table tempTable (id int, code varchar(255)); 

load data infile 'csv_file_path' into table tempTable ; 

aktualisieren Sie dann Ihre Tabelle einen JOIN mit temp-Tabelle verwenden.

update myTable t1 
join tempTable t2 
on t1.id = t2.id 
set t1.code = t2.code; 

Danach löschen Sie einfach die Temp-Tabelle.

drop temporary table if exists tempTable; 
Verwandte Themen