2014-03-12 100 views
0

举一个例子,下面有两个表格。如何用MySQL中的单个选择查询更新多列?

OldData 
----------- 
    id 
    name 
    address 

NewData 
----------- 
    nid 
    name 
    address 

我想NewData表更新OldData表。

为了这个目的,我尝试使用下面的查询:

UPDATE OldData SET (name, address) = (SELECT name, address FROM NewData WHERE nid = 234) 
WHERE id = 123 

但是它给出了一个语法错误。

做什么我尝试的正确方法是什么?

+2

这就是为什么我在这里问 –

回答

3
UPDATE OldData o, NewData n 
SET n.name = o.name, n.address = o.address 
where n.nid=234 and o.id=123; 
+0

应该'SET o.name = n.name,o.address = n.address'。 –

0

试试这个:

Update oldData set name = (select name from newData where nid = 234),address = (select address from newData where nid = 123); 
+0

这需要2选择查询可能性能问题 –

0

试试这个:

UPDATE OldData a,NewData b 
SET a.name = b.name , a.address = b.address 
WHERE a.id=123 AND b.nid = 234