使用另一个表中的数据更新mysql表

Wil*_*ald 39 mysql sql-update

是否可以使用子选择在mysql 5.0上运行UPDATE命令.

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

UPDATE book_details
SET live = 1 
WHERE ISBN13 = '(SELECT ISBN13 FROM book_details_old WHERE live = 1)';
Run Code Online (Sandbox Code Playgroud)

ISBN13当前存储为字符串.

这应该是更新10k +行.

谢谢,

威廉

MCu*_*elo 181

UPDATE table1 t1, table2 t2
SET t1.field_to_change = t2.field_with_data
WHERE t1.field1 = t2.field2;
Run Code Online (Sandbox Code Playgroud)

  • 这是满足所有需求的更好的答案,非常感谢! (12认同)

Rob*_*Rob 23

UPDATE book_details AS bd, book_details_old AS old
SET bd.live=1  
WHERE bd.isbn13=old.isbn13  
AND old.live=1;
Run Code Online (Sandbox Code Playgroud)


Ric*_*ras 17

只是一个小小的变化,你得到它:

UPDATE book_details
SET live = 1 
WHERE ISBN13 in (SELECT ISBN13 FROM book_details_old WHERE live = 1);
Run Code Online (Sandbox Code Playgroud)

  • 静态"1"不是所请求的来自另一个表的数据. (5认同)

小智 6

要从另一个表中的数据更新一个表:

UPDATE table1, table2
SET table1.field1 = table2.field1
WHERE table1.id = table2.id;
Run Code Online (Sandbox Code Playgroud)

例如:

UPDATE transaction, member
SET transaction.Memberid = member.memberId
WHERE transaction.CardId = member.CardId;
Run Code Online (Sandbox Code Playgroud)