Sql 基于Access中的另一列更新列

Sql 基于Access中的另一列更新列,sql,ms-access,Sql,Ms Access,我有一个疑问: SELECT ID, T2.code1, T2.code2, T2.mins FROM Table AS T1, ( SELECT code1, code2, MIN(ID) AS mins FROM Table GROUP BY code1, code2 HAVING count(*)>1 ) AS T2 WHERE T1.code1=T2.code1 And T1.code2=T2.code2; 其中,我获取所有基于代码1和代码2的重复行,并获取重复行的最小ID 现

我有一个疑问:

SELECT ID, T2.code1, T2.code2, T2.mins
FROM Table AS T1, (
SELECT code1, code2, MIN(ID) AS mins
FROM Table GROUP BY code1, code2 HAVING count(*)>1
)  AS T2
WHERE T1.code1=T2.code1 And T1.code2=T2.code2;
其中,我获取所有基于代码1和代码2的重复行,并获取重复行的最小ID

现在我要做的是更新表,将重复行的ID设置为最小值

我尝试了此操作,但在access中出错:(操作必须使用可更新的查询)


非常感谢您的帮助。

考虑使用临时表,使用聚合块的Make table action查询,然后加入
更新
。Access SQL需要更新查询来保留条件,这通常意味着直接表和简单联接查询,或者可以在其数据表视图中编辑/添加/删除的任何表/查询。具有
分组依据的聚合查询永远不可更新

生成表查询

SELECT code1, code2, MIN(ID) AS mins 
INTO Temp
FROM Table 
GROUP BY code1, code2 
HAVING COUNT(*)>1;
UPDATE Table t1 INNER JOIN Temp t2
ON t1.code1 = t2.code1 AND t1.code2 = t2.code2
SET t1.Col = t2.Mins;
更新查询

SELECT code1, code2, MIN(ID) AS mins 
INTO Temp
FROM Table 
GROUP BY code1, code2 
HAVING COUNT(*)>1;
UPDATE Table t1 INNER JOIN Temp t2
ON t1.code1 = t2.code1 AND t1.code2 = t2.code2
SET t1.Col = t2.Mins;
或者,尝试使用域聚合,如
DMax()
DMin()
DCount()
,等等。下面假设代码字段是数字类型:

UPDATE Table t1
SET t1.Col = DMin("ID", "Table", "code1=" & t1.code1 & " AND code2=" & t1.code2)
WHERE DCount("ID", "Table", "code1=" & t1.code1 & " AND code2=" & t1.code2) > 1