2009-07-01 11 views
36

मैं टेबल ए से डेटा के साथ तालिका ए को अपडेट करने का प्रयास कर रहा हूं। मैंने सोचा कि मैं कुछ ऐसा कर सकता हूं:दो टेबल के साथ अद्यतन करें?

 UPDATE A 
SET A.name = B.name 
WHERE A.id = B.id 

लेकिन हां, यह काम नहीं करता है।

किसी को भी यह पता है कि मैं यह कैसे कर सकता हूं?

उत्तर

62

आपकी क्वेरी काम नहीं करती है क्योंकि आपके पास खंड से है जो आपके द्वारा ए/बी के माध्यम से अलियासिंग टेबल निर्दिष्ट करता है। (! हंसी नहीं है)

UPDATE A 
    SET A.NAME = B.NAME 
FROM TableNameA A, TableNameB B 
WHERE A.ID = B.ID 

व्यक्तिगत तौर पर मैं अधिक स्पष्ट यानी

UPDATE A 
    SET A.NAME = B.NAME 
FROM TableNameA A 
    INNER JOIN TableName B ON 
     A.ID = B.ID 
+2

मैं तुम्हें सेट खंड में के लिए अन्य नाम हैं, कर सकते हैं अगर नहीं पता है। एसक्यूएल के आपके स्वाद पर निर्भर हो सकता है, लेकिन मुझे विश्वास है कि चूंकि यह एक दिया गया है कि आप "ए" को अपडेट कर रहे हैं जिसे अस्वीकार कर दिया गया है। –

14

माइक्रोसॉफ्ट एक्सेस के लिए स्पष्टता के लिए वाक्य रचना में शामिल होने का उपयोग करना पसंद ...

:

निम्नलिखित उपयोग करके देखें

UPDATE TableA A 
    INNER JOIN TableB B 
    ON A.ID = B.ID 
SET A.Name = B.Name 
+0

चयनित उत्तर मारिया डीबी पर मेरे लिए काम नहीं किया था। यह एक किया था। धन्यवाद ! –

5

मैं अपने सिर को खरोंच कर रहा था, कम से कममें जॉन संसॉम के सिंटैक्स काम में शामिल होने में सक्षम नहीं था।

यह पता चला है कि यह काम नहीं करता है।

UPDATE A 
    SET A.x = 1 
FROM A INNER JOIN B 
     ON A.name = B.name 
WHERE A.x <> B.x 

लेकिन यह काम करता है:

UPDATE A INNER JOIN B 
    ON A.name = B.name 
SET A.x = 1 
WHERE A.x <> B.x 
+2

उपरोक्त SQL-Server है, MySQL नहीं? – christiandev

संबंधित मुद्दे