ADO SQL更新表,按查询结果分组

时间:2010-05-12 01:29:06

标签: 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;

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

未经测试,但如此陈述声明这应解决您的问题

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 Query中,看看它是如何进行的。从内存中我常常对Access和子查询有很多麻烦,方括号有时也会有所帮助,但内存不可靠。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

你有没有试过类似的东西?

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。

但我猜这个或类似的东西都应该这样做。