Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有分组查询结果的ADO SQL更新表_Sql_Ms Access_Group By_Ado_Sql Update - Fatal编程技术网

具有分组查询结果的ADO SQL更新表

具有分组查询结果的ADO SQL更新表,sql,ms-access,group-by,ado,sql-update,Sql,Ms Access,Group By,Ado,Sql Update,我试图用包含相同值的记录数更新.mdb表中的记录 下面的SQL不起作用,但我认为它表明了我正在努力实现的目标 UPDATE table1 AS A INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT FROM table1 GROUP BY PH_BSP) AS B ON A.PH_BSP=B.PH_BSP SET A.PH_SORT = B.PHCOUNT; 有什么想法吗?你试过类似的东西吗 update table1 as a

我试图用包含相同值的记录数更新.mdb表中的记录

下面的SQL不起作用,但我认为它表明了我正在努力实现的目标

UPDATE table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT  FROM table1 GROUP BY PH_BSP)  AS B
ON A.PH_BSP=B.PH_BSP
SET A.PH_SORT = B.PHCOUNT;

有什么想法吗?

你试过类似的东西吗

update table1 as a
    set a.ph_sort = (
        select COUNT(b.ph_bsp) as phcount
            from table1 b
            where b.ph_bsp = a.ph_bsp)
我假设这里是SQL Server


但是我想,这个或类似的东西应该可以做到这一点。

未经测试,但列出声明,这样应该可以解决您的问题

UPDATE A
SET A.PH_SORT = B.PHCOUNT
From table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT  FROM table1 GROUP BY PH_BSP)  AS B
ON A.PH_BSP=B.PH_BSP
编辑:
您的问题可能来自您的子查询,我会尝试将该部分放入一个单独的Access查询中,然后看看它是如何运行的。从内存来看,我过去在访问和子查询方面遇到很多麻烦,方括号有时也会有帮助,但从内存来看不可靠。

如果在Access中执行此操作,则需要使用域聚合函数:

UPDATE table1 
SET PH_SORT = DCount("PH_BSP","Table1","PH_BSP='" & PH_BSP & "'")

上面假设PH_BSP是一个文本字段,如果它是数字,请删除单引号。

表位于.mdb数据库中,因此访问权限是转到此处。。。我尝试了上面的sql,但得到一条消息:操作必须使用可更新的查询此消息表示无法执行更新。这意味着DML中的某个地方出现了错误。事实上,我正试图设置a.ph_bsp=select。。。而不是在我的示例代码中使用.ph_排序。也许有了这个更新后的示例?@brett:试着省略为A,也许这就是为什么表变得不可更新的原因+1,这也是我没有想到的一个众所周知的形式=在access中,这将生成:语法错误在查询表达式B中缺少运算符。表1中的PHCOUNT作为内部联接选择PH_BSP,表1中的CountPH_BSP作为PHCOUNT组中的PH_BSP作为A上的B。PH_BSP=B.PH_BSP感谢提供信息。如果域聚合函数是访问表执行此操作的唯一方法,那么我认为它返回到临时表中的“groupby”,并连接到原始表。我每天在许多数据库中处理成百上千条记录,而DCount的速度太慢了,就像几个小时一样,无法慢下来。再次感谢您的帮助