我有一个不寻常的问题。我在MS Access中创建一个应用程序,并且在创建代码时遇到错误。我首先自己寻找解决方案,最后找到了解决方案。通常,由于“愚蠢的错误”,我的Access代码无法正常工作。
在该线程中使用13个优点查看第二个答案:How do I perform update query with subquery in Access?如您所见,MS Access不允许您在查询中执行子查询(?)。我在SQL Server中创建了相同的环境,并且可以正常工作。有人可以帮我重写查询吗?
SQL
UPDATE DANE_BUD_ALL_BR
SET ID_ewidencji = (
SELECT ID_ewidencji FROM Ewidencje
WHERE Ewidencje.E_numerProjektu LIKE DANE_BUD_ALL_BR.numerProjektu
)
WHERE Identyfikator IN (
SELECT b.Identyfikator
FROM DANE_BUD_ALL_BR b INNER JOIN Ewidencje e
ON e.E_numerProjektu = b.numerProjektu
WHERE e.E_numerProjektu LIKE b.numerProjektu
);
我希望以与SQL Server中相同的方式执行查询-因为它在那里工作。
// 有两个表:“ ewidencje”和“ dane”。它们与“ ID_ewidencji”相连,在两个表中都有一个“ numerProjektu”字段(忽略它是数据库中数据重复的事实)。图1显示了SQL查询之前的数据。在进行UPDATE查询后,我希望基于两个表中的相同“ numerProjektu”来完成“数据”表中的“ ID_ewidencji”字段。查询后(照片2),我们可以看到它发生了。但是,访问会引发错误:操作必须使用更新表查询。
答案 0 :(得分:0)
尝试使用以下措辞:
UPDATE DANE_BUD_ALL_BR
SET ID_ewidencji = (SELECT ID_ewidencji
FROM Ewidencje as e
WHERE e.E_numerProjektu LIKE DANE_BUD_ALL_BR.numerProjektu
)
WHERE EXISTS (SELECT 1
FROM Ewidencje as e
WHERE e.E_numerProjektu LIKE DANE_BUD_ALL_BR.numerProjektu
);
换句话说,可能没有理由在子查询FROM
子句中重复正在更新的表的名称。
编辑:
简单的JOIN
是否可以在MS Access中使用?
UPDATE DANE_BUD_ALL_BR as bab INNER JOIN
Ewidencje as e
ON e.E_numerProjektu LIKE bab.numerProjektu
SET bab.ID_ewidencji = e.ID_ewidencji;
这是在MS Access中编写逻辑的更通俗易懂的方法。