UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
उसे यह करना चाहिए, और वास्तव में यह वही कर रहा है जो आपका है। हालांकि, मैं कई 'WHERE' स्थितियों के बजाय जुड़ने के लिए 'जॉइन' सिंटैक्स पसंद करता हूं, मुझे लगता है कि इसे पढ़ना आसान है
जहां तक धीमी गति से चलने की बात है, तो टेबल कितनी बड़ी हैं? आपके पास 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