我有两张桌子,看起来都像
id name value
===================
1 Joe 22
2 Derk 30
我需要根据每个表中的检查名称将值的值从tableA复制到tableB。
对于这个UPDATE语句有什么建议吗?
我有两张桌子,看起来都像
id name value
===================
1 Joe 22
2 Derk 30
我需要根据每个表中的检查名称将值的值从tableA复制到tableB。
对于这个UPDATE语句有什么建议吗?
当前回答
除了这个答案,如果你需要改变tableB。值根据表a。值可以动态执行,例如:
UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe'
其他回答
如果你正在使用安全更新模式(并且你会得到一个错误,表明你已经尝试更新一个没有使用KEY列的WHERE表),第二种选择也是可行的,通过添加:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
)
**where TableB.id < X**
;
第二种可能是,
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
);
更新为多 set value = table .value 从表b where table .name =table .name
除了这个答案,如果你需要改变tableB。值根据表a。值可以动态执行,例如:
UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe'
UPDATE cities c,
city_langs cl
SET c.fakename = cl.name
WHERE c.id = cl.city_id