从 [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 解决了,但语法并没有完全翻译......具有左联接和分组依据的 MySQL 更新查询
好的,解决了这个问题。出于某种原因,我试图在我应该做和附加的时候进行更新查询。这完成了工作:
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));