2009-01-05 31 views
37

Ist es möglich, einen UPDATE-Befehl auf mysql 5.0 mit einer Unterauswahl auszuführen.MySQL-Tabelle mit Daten aus einer anderen Tabelle aktualisieren

Der Befehl Ich mag würde laufen, ist dies:

UPDATE book_details 
SET live = 1 
WHERE ISBN13 = '(SELECT ISBN13 FROM book_details_old WHERE live = 1)'; 

ISBN13 wird zur Zeit als String gespeichert.

Dies sollte 10k + Zeilen aktualisieren.

Danke,

William

+0

Ja, es ist möglich. Die Diskussion auf dieser [Seite] (http://dev.mysql.com/doc/refman/5.0/en/update.html) sollte helfen. –

Antwort

15

Nur eine litle ändern und Sie haben es:

UPDATE book_details 
SET live = 1 
WHERE ISBN13 in (SELECT ISBN13 FROM book_details_old WHERE live = 1); 
+5

Die statische "1" enthält keine Daten aus einer anderen Tabelle wie angefordert. – Leo

+0

Dies ist nicht sehr leistungsfähig gegenüber großen Datensätzen. – BFWebAdmin

22
UPDATE book_details AS bd, book_details_old AS old 
SET bd.live=1 
WHERE bd.isbn13=old.isbn13 
AND old.live=1; 
170
UPDATE table1 t1, table2 t2 
SET t1.field_to_change = t2.field_with_data 
WHERE t1.field1 = t2.field2; 
+11

Dies ist viel bessere Antwort für alle Bedürfnisse, vielen Dank! –

-4

Um Daten zu aktualisieren aus anderen Tabelle

UPDATE tab t1 
SET  t1.company_name = t2.company_name 
FROM tab t2 
WHERE t1.id = t2.id 
+0

Dies sollte nicht funktionieren – sonnb

3

Um

UPDATE table1, table2 SET table1.field1 = table2.field1 where table1.id = table2.id

EX eine Tabelle aus Daten in anderer Tabelle zu aktualisieren. UPDATE transaction, member SET transaction.Memberid = member.memberId WHERE transaction.CardId = member.CardId;

Verwandte Themen