Wie aktualisieren Sie mehrere Felder aus einer anderen Tabelle in mysql?
Dies ist die Abfrage, die ich versuche zu erreichen:
update amdashboard
set (ASCID, ASCFirst, ASCLast, ASCOtherName, ASCAdd1, ASCAdd2,
ASCCity, ASCState, ASCZip, ASCZip4, ASCY2007, ASCY2008, ASCY2009,
ASCY2010, ASCY2011, ASCY2012, ASCEthnicity, ASCGender, ASCMaritalStatus)
= (select id, firstname, lastname, listingspousename, add1, add2,
city, state, zip, zip4, y2007, y2008, y2009,
y2010, y2011, y2012, Ethnicity, Gender, MaritialStatus
from ASCNCOAClean
inner join amdashboard
on ASCNCOAClean.firstname = amdashboard.actorsfirst
and ascncoaclean.lastname = amdashboard.actorslast)
where exists (select id, firstname, lastname, listingspousename,
add1, add2, city, state, zip, zip4, y2007, y2008,
y2009, y2010, y2011, y2012, Ethnicity, Gender,
MaritialStatus
from ASCNCOAClean
inner join amdashboard
on ASCNCOAClean.firstname = amdashboard.actorsfirst
and ascncoaclean.lastname = amdashboard.actorslast);
Ich kann nicht ankommen dieses zu wirken...erhalten einen syntax-error auf die erste Klammer. So, ich dachte, ich würde versuchen, auf nur einem Feld. Ich versuchte dies:
update amdashboard
set ascid = (select ascncoaclean.id
from ASCNCOAClean
where ASCNCOAClean.firstname = amdashboard.actorsfirst
and ascncoaclean.lastname = amdashboard.actorslast)
where exists (select ascncoaclean.id
from ASCNCOAClean
where ASCNCOAClean.firstname = amdashboard.actorsfirst
and ascncoaclean.lastname = amdashboard.actorslast);
Diese jedoch zurück und Fehler 1242: Unterabfrage gibt mehr als 1 Zeile. Das scheint mir albern. Ich weiß, es wird mehr als eine Zeile zurückgegeben...ich will es, weil ich auf mehrere Zeilen aktualisieren.
Was bin ich?
Können Sie einige Beispiel-Daten oder aus der schema-Struktur?
InformationsquelleAutor The Hammer | 2013-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Abfrage, die Sie wollen, würde in etwa so Aussehen:
Beobachten, Sie zu ersetzen müssen
...
mit dem rest der Spalte, die Verbände, die ich nicht geschrieben habe.Aber seien Sie vorsichtig mit diesem, etwas sagt mir diese Abfrage wird, zu tun, etwas sehr falsch mit Ihrer Datenbank, weil Sie nicht über die Tabellen mit einem eindeutigen Schlüssel. Wenn es zwei Datensätze mit der gleichen
ASCNCOAClean.firstname
Sie sicherlich haben, den Verlust von Daten.Beachten Sie auch, dass es geht zu aktualisieren bestehenden Datensätze auf
amdashboard
, nicht neue hinzufügen. Wenn Ihre Absicht ist, migrieren von Daten vonASCNCOAClean
zuamdashboard
, vorausgesetztamdashboard
ist eine Marke, die neue, leere Tabelle, dann ist die Abfrage, die Sie wollen, ist dies:Dies ist, wo ich gelandet bin
update amdashboard inner join ASCNCOAClean auf ASCNCOAClean.firstname = amdashboard.actorsfirst und ascncoaclean.lastname = amdashboard.actorslast set /*amdashboard.ascid = ascncoaclean.id*/ /*amdashboard.ascfirst = ascncoaclean.Vorname*/ amdashboard.asclast = ascncoaclean.Nachname, amdashboard.ascothername = ascncoaclean.listingspousename, amdashboard.ascadd1 = ascncoaclean.add1, amdashboard.ascadd2 = ascncoaclean.add2, amdashboard.asccity = ascncoaclean.Stadt, amdashboard.ascstate = ascncoaclean.Staat, amdashboard.asczip = ascncoaclean.zip ... ;
Sorry, ich bin noch immer verwendet, um dieses tool....Ich weiß, dass die nicht-format, gut...ich habe versucht, den link auf die beiden letzten Namen und den Vornamen, und ja, ich glaube, ich weiß, ich habe ein Problem mit doppelten Daten. Dies ist einen sauberen job für einen Kunden...ich wollte update auf die Datensätze, die Taten entsprechen, dann werde ich einfügen was nicht.
InformationsquelleAutor Havenard