我是这类事情的完全新手,因此这是一个简单的问题,但我有2份数据库表,我需要稍微合并一下。
两者都具有完全相同的结构,并包含成员帐户用户名和详细信息。在 table_1 - screen_name中的一列中,数据已被截断,因此我需要将其替换为 table_2 中相同列中的数据,这是较旧的备份同桌。我将重复几列,但首先,我正在尝试替换截断的screen_name。
我猜它应该很简单,但我无法让它发挥作用。只有大约4000行 - 唯一可能的复杂因素是 table_1 的记录多于 table_2 (这是一个较新的版本,从那时起已有更多成员注册),所以列本身不能被旧备份完全替换。
这是我尝试过的,但它似乎没有用(显然会出现语法错误):
UPDATE exp_memberscorrupt
SET exp_memberscorrupt.screen_name = exp_membersclean.screen_name
JOIN exp_membersclean
JOIN exp_memberscorrupt on exp_membersclean.member_id = exp_memberscorrupt.member_id
有什么想法吗?
答案 0 :(得分:2)
如果这是SQL Server,则语法为
UPDATE exp_memberscorrupt
SET exp_memberscorrupt.screen_name = exp_membersclean.screen_name
FROM exp_membersclean
JOIN exp_memberscorrupt on exp_membersclean.member_id = exp_memberscorrupt.member_id
由于它是MySQL,因此update-from-join的语法是:(在“UPDATE”之后将表移到顶部)
UPDATE exp_membersclean
JOIN exp_memberscorrupt on exp_membersclean.member_id = exp_memberscorrupt.member_id
SET exp_memberscorrupt.screen_name = exp_membersclean.screen_name
答案 1 :(得分:0)
update exp_memberscorrupt cor
set cor.screen_name = cln.screen_name
from exp_membersclean cln
where cor.member_id = cln.screen_name
答案 2 :(得分:0)
试试这个,
不要忘记使用WHERE子句和mysql_error()函数来捕获db错误
更新exp_memberscorrupt
INNER JOIN exp_membersclean
ON exp_membersclean.member_id = exp_memberscorrupt.member_id
SET exp_memberscorrupt.screen_name = exp_membersclean.screen_name
在哪里......