UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
それはそれをするはずです、そして実際にそれはあなたのものとまったく同じことをします。ただし、結合には複数の「WHERE」条件よりも「JOIN」構文の方が好きです。読みやすいと思います
実行速度が遅いということですが、テーブルの大きさはどれくらいですか? tobeupdated.value
にインデックスが必要です およびoriginal.value
編集:クエリを簡略化することもできます
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
結合の両方のテーブルに同じ名前のkey
がある場合は省略形です id
など 。つまり、等結合- http://en.wikipedia.org/ wiki / Join_(SQL)#Equi-join