2009-07-01 38 views
36

Tablo A'yı tablo B'den güncellemeye çalışıyorum. gibi bir şey yapabileceğimi düşündüm:İki tablo ile güncelleyin?

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

ama alas, bu işe yaramıyor.

Bunu nasıl yapabileceğimi bilen var mı?

cevap

62

Sorgunuz, A/B ile hizaladığınız tabloları belirten FROM numaralı tümceye sahip olmadığınız için çalışmaz. (! Gülme)

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

Şahsen ben daha açık Microsoft Access

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

Bilmiyorum. SQL'inizin lezzetine bağlı olabilir, ama inanıyorum ki, "A" yı güncellemenize izin verildiği için verilmiş. –

14

yani netlik için sözdizimi katılmak kullanmayı tercih ...

:

aşağıdaki kullanmayı deneyin

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

Seçilen cevap MariaDB'de benim için çalışmadı. Bu yaptı. Teşekkürler ! –

5

Başım ağrıyordu, John Sansom'un Join sözdizimi çalışmasını elde edemiyorum, en azından MySQL 5.5.30 InnoDB.

Bunun işe yaramadığı anlaşılıyor.

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

Ama bu çalışır: SET yan tümcesinde için takma adına sahip olmadığını

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

Yukarıdaki SQL Server, MySQL değil mi? – christiandev