2009-01-05 98 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;

相關問題