我已经查找了如何做到这一点并找到答案 here
我已经设置了一个基本的MS Access 2013数据库来测试它并尝试了两种解决方案。
当我尝试运行以下内容时:
UPDATE
Tbl1 as A
INNER JOIN tbl2 AS B ON A.userID = B.UserID
SET A.userID = B.[UserID];
我收到一个消息框,说我即将更新0行。即使在tbl2中有UserID数据。
当我尝试:
UPDATE A
SET A.[UserID] = B.[UserID]
FROM tbl1 A, tbl2 B WHERE A.[UserID] = B.[UserID]
我在查询表达式"
中得到了#34;语法错误(缺少运算符)我注意到有人在评论中提到第二种解决方案在Access 2013中不起作用,但就像我说的那样,第一种解决方案也不起作用。
有谁知道我哪里出错?
答案 0 :(得分:1)
尝试
更新tbl1 SET userid =(SELECT userid 从tbl2)
答案 1 :(得分:1)
"我收到一个消息框,说我要更新0行。即使在tbl2中有UserID数据。"
因为如果更新A.userID = B.[UserID]
,那么A.userID = B.UserID
会更新0行。
如果您加入类似userName
之类的东西,那么您可能正在做某事。
UPDATE Tbl1 as A
INNER JOIN tbl2 AS B ON A.userName = B.userName
SET A.userID = B.[UserID];
答案 2 :(得分:1)
至于我在这里看到的是你试图在where子句中设置你也使用的列的值。在您引用的答案中,设置的列与where子句中使用的列不同,因此0行更新消息。