UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
Điều đó nên làm được, và nó thực sự đang làm chính xác những gì của bạn. Tuy nhiên, tôi thích cú pháp 'JOIN' cho các phép nối hơn là nhiều điều kiện 'WHERE', tôi nghĩ nó dễ đọc hơn
Còn chạy chậm thì các bảng có kích thước bao nhiêu? Bạn nên có các chỉ mục trên tobeupdated.value
và original.value
CHỈNH SỬA:chúng tôi cũng có thể đơn giản hóa truy vấn
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
là viết tắt khi cả hai bảng của một phép nối có một khóa key
được đặt tên giống hệt nhau chẳng hạn như id
. tức là tham gia tương đương - http://en.wikipedia.org/ wiki / Join_ (SQL) # Equi-join