2009-01-05 16 views
37

¿Es posible ejecutar un comando ACTUALIZAR en mysql 5.0 con una selección secundaria?Actualizar tabla mysql con datos de otra tabla

El comando quisiera ejecutar es la siguiente:

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

ISBN13 se almacena actualmente como una cadena.

Esto debería estar actualizando 10k + filas.

Gracias,

William

+0

Sí, es posible. La discusión sobre esta [página] (http://dev.mysql.com/doc/refman/5.0/en/update.html) debería ayudar. –

Respuesta

15

sólo un cambio de Litle y lo tienes:

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

El "1" estático no es información de otra tabla como se solicitó. – Leo

+0

Esto no será muy útil en grandes conjuntos de datos. – 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

Esta es una respuesta mucho mejor para satisfacer todas las necesidades, ¡muchas gracias! –

-4

para actualizar los datos de otros Tabla

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

Esto no debería funcionar – sonnb

3

Para actualizar una tabla de datos en otra tabla

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

EX. UPDATE transaction, member SET transaction.Memberid = member.memberId WHERE transaction.CardId = member.CardId;

Cuestiones relacionadas