2009-01-05 97 views
37

是否可以使用子选择在mysql 5.0上运行UPDATE命令。使用另一个表中的数据更新mysql表

我想运行的命令是这样的:

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

ISBN13当前存储为一个字符串。

这应该是更新10k +行。

感谢,

威廉

+0

是的,这是可能的。关于这个[page](http://dev.mysql.com/doc/refman/5.0/en/update.html)的讨论应该有所帮助。 – 2009-01-05 23:05:31

回答

15

只是痘痘变化,你得到它:

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

静态“1”不是根据请求从另一个表中获取数据。 – Leo 2013-10-01 12:14:43

+0

这对于大型数据集来说不是很有用。 – BFWebAdmin 2017-11-01 09:47:28

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

这是更好的答案,以满足所有需求,非常感谢! – 2013-02-26 06:59:41

-4

要更新数据从其它表格

UPDATE tab t1 
SET  t1.company_name = t2.company_name 
FROM tab t2 
WHERE t1.id = t2.id 
3

要在其他表

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;

相关问题