43

Is it possible to run an UPDATE command on mysql 5.0 with a sub select.

The command I would like to run is this:

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

ISBN13 is currently stored as a string.

This should be updating 10k+ rows.

Thanks,

William

1
  • Yes it is possible. The discussion on this page should help. Commented Jan 5, 2009 at 23:05

5 Answers 5

190
UPDATE table1 t1, table2 t2
SET t1.field_to_change = t2.field_with_data
WHERE t1.field1 = t2.field2;
Sign up to request clarification or add additional context in comments.

Comments

23
UPDATE book_details AS bd, book_details_old AS old
SET bd.live=1  
WHERE bd.isbn13=old.isbn13  
AND old.live=1;

Comments

17

Just a litle change and you got it:

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

2 Comments

The static "1" is not data from another table as requested.
This won't be very perfomative over large datasets.
6

To update a table from data in another table:

UPDATE table1, table2
SET table1.field1 = table2.field1
WHERE table1.id = table2.id;

For example:

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

Comments

-3

To Update data From Other Table

UPDATE  tab t1, tab t2
SET     t1.company_name = t2.company_name
WHERE   t1.id = t2.id

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.