Mailinglisten-Archive |
Rene Fertig schrieb am Montag, den 23. August 1999: > Wie kann ich Spalten einer Tabelle mit Werten füllen, die aus einer > anderen Tabelle stammen? Ein > > update Tab1, Tab2 set Tab1.B_ID=Tab2.ID where Tab1.Tln_ID=Tab2.Tln_ID; > > quitiert mysql mit einem Syntax-Error. :-( An erster Stelle hier meine dicke Empfehlung, speziell bei Syntax- Fehlern gleich im MySQL-Handbuch nachzusehen, denn die Beschreibung dort stimmt. Was da nicht steht, geht auch nicht. Und in Kapitel "7.16 UPDATE syntax" heißt's: UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,... [WHERE where_definition] Also nur ein Tabellenname ... > Muss ich etwa mit REPLACE arbeiten? Ja, das ist meines Wissens der einizge Weg, die Aufgabe in MySQL mit einer einzigen SQL-Anweisung zu lösen. Erstaunlicherweise ist das aber kaum langsamer als ein UPDATE ... REPLACE INTO Tab1 SELECT Tab1.feld1, Tab2.feld2, ..., Tab2.ID, Tab1.feld8, ... FROM Tab1, Tab2 WHERE Tab1.Tln_ID=Tab2.Tln_ID; Im SELECT müssen also alle Felder von Tab1 in der richtigen Reihenfolge auftauchen und an der gewünschten Stelle der neue Wert. Damit das richtig funktioniert, muß Tab1 einen PRIMARY KEY haben, da sonst mit REPLACE INTO nur neue Datensätze hinzugefügt würden, statt die alten zu ersetzen. Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive