आपकी पंक्तियों की पहचान करने के लिए आपके पास कोई अद्वितीय स्तंभ नहीं है। तो आपकाJOIN
आपके विचार से संभवत:अधिक पंक्तियों को अपडेट कर देगा।
आप शायद इसके बजाय कुछ ऐसा चाहते हैं:
UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
USING (a)
SET t1.b = t2.m;
देखें http://sqlfiddle.com/#!2/c6a04/1
यदि आप केवल NULL
. वाली पंक्तियों को अपडेट करना चाहते हैं कॉलम में b , यह केवल WHERE
. की बात है खंड:
CREATE TABLE tem(a INT,b INT);
INSERT INTO tem VALUES(1,2),(1,1),(1,NULL),(2,3);
UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
USING (a)
SET t1.b = t2.m
WHERE t1.b IS NULL;
देखें http://sqlfiddle.com/#!2/31ffb/1