使用左联接和分组依据访问更新查询

时间:2018-08-11 14:21:34

标签: ms-access join null

从[任务代码区]中当前不存在的[Task_History_Report_063018]中选择42个唯一任务代码的查询是

SELECT Task_History_Report_063018.[Task code]
FROM Task_History_Report_063018 LEFT JOIN [Task Code Dict] 
ON Task_History_Report_063018.[Task code] = [Task Code Dict].[Task Code]
WHERE ((([Task Code Dict].[Task Code]) Is Null))
GROUP BY Task_History_Report_063018.[Task code];

当我将其转换为以下更新查询时:

UPDATE Task_History_Report_063018 LEFT JOIN [Task Code Dict] 
ON Task_History_Report_063018.[Task code] = [Task Code Dict].[Task Code] 
SET [Task Code Dict].[Task Code] = [Task_History_Report_063018].[Task code]
WHERE ((([Task Code Dict].[Task Code]) Is Null));

它将尝试使用201个非唯一任务代码更新字典。这是42个唯一的代码,并由其重复项扩展。

我尝试过:

UPDATE (SELECT Task_History_Report_063018.[Task code]
FROM Task_History_Report_063018
GROUP BY Task_History_Report_063018.[Task code]) as GroupedTasks 
LEFT JOIN [Task Code Dict] 
ON GroupedTasks.[Task code] = [Task Code Dict].[Task Code] SET [Task Code Dict].[Task Code] = GroupedTasks.[Task code]
WHERE ((([Task Code Dict].[Task Code]) Is Null));

当我选择数据表视图时,我看到对应于新的唯一任务代码的42个空记录,但是当我尝试执行时,出现错误消息:

操作必须使用可更新的查询。

我认为这里是针对MySQL的,但语法没有完全翻译... enter image description here

1 个答案:

答案 0 :(得分:0)

好的,解决此问题。由于某种原因,我在尝试进行追加时试图进行更新查询。这样就完成了工作:

INSERT INTO [Task Code Dict] ( [Task Code] )
SELECT DISTINCT Task_History_Report_063018.[Task code]
FROM Task_History_Report_063018 LEFT JOIN [Task Code Dict] 
ON Task_History_Report_063018.[Task code] = [Task Code Dict].[Task Code]
WHERE ((([Task Code Dict].[Task Code]) Is Null));