Edit 2: Ich habe den Code in Kommas wie vorgeschlagen aktualisiert und ich habe die Syntax geändert, um es als table.column zu setzen.ALTER und UPDATE Tabellen in SQL basierend auf zwei Kriterien
Ich habe zwei Tabellen in einer SQL-Datenbank (mit Cloud Cloud von Google, wenn das wichtig ist). Die erste Tabelle pre2016q1 hat Spalten Tag und Adsh (und einige andere). Ich möchte Spalten hinzufügen und dann diese Spalten mit Werten aus einer anderen Tabelle füllen num2016q1, die auch die Spalten Tag und adsh wenn die Werte in beiden Tabellen gleich sind.
Hinweis: Dies sind große Tabellen mit je> 2MM Zeilen.
Edit1: Ich frage, bevor ich laufe, weil es lange gedauert hat, um die DB in ihren aktuellen Zustand zu bringen, und ich will das Ganze nicht vermasseln.
Frage 1: Führt der folgende Code den oben beschriebenen Vorgang aus?
Frage 2: Wenn es kein Äquivalent zu Tag ist und adsh werden die Datensätze leer bleiben?
Frage 3: Ist eine Spalte mit dem Namen Wert gehen Probleme verursachen oder sollte ich das vorher umbenennen?
Frage 4: Ist die Größe der Tabelle in der Zeit wichtig, die die Operation dauern wird? (Ich frage nur, weil ich diese Operation 16 Mal machen muss).
ALTER TABLE pre2016q1
ADD
version VARCHAR(20),
ddate INTEGER,
qtrs INTEGER,
uom VARCHAR(20),
value NUMERIC(28,4),
footnote VARCHAR(512);
UPDATE
pre2016q1
SET
pre2016q1.ddate = num2016q1.ddate,
pre2016q1.qtrs = num2016q1.qtrs,
pre2016q1.uom = num2016q1.uom,
pre2016q1.value = num2016q1.value,
pre2016q1.footnote = num2016q1.footnote
WHERE
adsh.pre2016q1 = adsh.num2016q1 AND tag.pre2016q1 = tag.num2016q1;
Sie müssen num2016q1 beitreten nehmen und es ist wichtig zu wissen, welche Geschmack von SQL Googles Cloud SQL, weil das ist Update/Join-Syntax unterscheidet zwischen MYSQL und SQL-SERVER. –
Die alte Tabellensyntax ist falsch und die set-Anweisung ist falsch. (MYSQL) –
Könnten Sie mir helfen, was falsch ist, besonders im SET-Teil? – user1563247