这要看你的数据库,有些数据库不允许对分组函数update(例如Access)
如果允许的话 update 表1 t set t.数量 = (select count(*) from 表2 where 编号=t.编号)
如果你用Access的话要这样写:
select 编号, count(*) as 数量 from 表2 group by 编号 into tmp;
update 表1 inner join tmp on 表1.编号=tmp.编号 set 表1.数量=tmp.数量;
drop table tmp;
----------------------------------------------
类似的问题的答案:
两个都写上:
CREATE CURSOR 表2 ( bh i, sl i)
INSERT INTO 表2 VALUES ( 1, 20)
INSERT INTO 表2 VALUES ( 2, 10)
INSERT INTO 表2 VALUES ( 3, 30)
INSERT INTO 表2 VALUES ( 4, 40)
INSERT INTO 表2 VALUES ( 5, 50)
INSERT INTO 表2 VALUES ( 6, 60)
INSERT INTO 表2 VALUES ( 1, 20)
INSERT INTO 表2 VALUES ( 2, 10)
INSERT INTO 表2 VALUES ( 3, 30)
INSERT INTO 表2 VALUES ( 4, 40)
INSERT INTO 表2 VALUES ( 5, 50)
INSERT INTO 表2 VALUES ( 6, 60)
INSERT INTO 表2 VALUES ( 8, 60)
CREATE CURSOR 表1 ( bh i, n_sl i)
INSERT INTO 表1 VALUES ( 1, 0)
INSERT INTO 表1 VALUES ( 2, 0)
INSERT INTO 表1 VALUES ( 3, 0)
INSERT INTO 表1 VALUES ( 4, 0)
INSERT INTO 表1 VALUES ( 5, 0)
INSERT INTO 表1 VALUES ( 7, 1)
UPDATE 表1 SET N_SL = a.sl from (SELECT bh, count(*) sl FROM 表2 a GROUP BY a.bh) a WHERE 表1.bh=a.bh
brow
UPDATE 表1 SET N_SL = a.sl from (SELECT bh, sum(sl) sl FROM 表2 a GROUP BY a.bh) a WHERE 表1.bh=a.bh
brow
-------------------------------------------------------------------------------
11楼
引用: 你知道你上面那句有啥影响么?。。。
数据一多 你全部UPDATE?对UPDATE不过滤 反而对UPDATA的结果过滤?
倘若原来那表1 的数量原来就有值 ,且某个BH不存在于表2 ,你直接也把他UPDATE为0?
说得太对了,那就再修正一下:
update 表1 set n_sl = (select sum(n_sl) from 表2 where bh = 表1.bh);
where bh in (select bh from 表2)
---------------------------------------------
8楼
update 表1 set n_sl = (select sum(n_sl) from 表2 where bh = 表1.bh)
这应该是最简捷的吧.
----------------------------------------------------------------
5楼
update table1 set table1.n_sl=b.sl from table1 a,(select bh,sum(sl) as sl from table2 group by bh) b where a.bh=b.bh
-----------------------------------------------------------------------------