请教一个组合查询语句

来源:互联网  时间:2016/8/16 5:15:25

关于网友提出的“ 请教一个组合查询语句”问题疑问,本网通过在网上对“ 请教一个组合查询语句”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 请教一个组合查询语句
描述:

表1中一个字段的值是表2中多个纪录的和,两个表有ID对应,如:
表1:
ID1    字段1
1      100
2      80
表2:
ID2    字段2
1      20
1      50
1      30
2      40
2      40
我的问题是,如果表2更新了,表1如何更新(不要用循环,数据多了就太慢了)。我想用一个SQL语句做,如下:
UPDATE 表1 SET 字段1 = (SELECT SUM(字段2) FROM 表2 WHERE ) WHERE
请问,他们的对应关系如何写(WHERE后的语句)?多谢各位!


解决方案1:


这有什麽困难的?
如果你的前台修改个了表2的某条记录,保存之後请执行下面SQL
var
  CurrentCode,SQL:string;
begin
  CurrentCode:=xxx.FieldByName('ID2').AsString;
  SQL:=Format(
   'UPDATE 表1 SET 字段1 = (SELECT SUM(字段2) FROM 表2 WHERE ID2=%s)WHERE
   ID1=%s',[CurrentCode,CurrentCode]);
  执行SQL语句;
end;
======================================================
如果在解发器内:
begin
  declare @CurrentCode varchar(100),
  select @CurrentCode=ID2 from deleted
  UPDATE 表1 SET 字段1 = (SELECT SUM(字段2) FROM 表2 WHERE ID2=@CurrentCode)WHERE
   ID1@CurrentCode
end
上面的代码没有在delphi和sql analizer内运行, 可能有语法错误,但思路正确!

解决方案2:

delete table1
insert into table1 select field1,sum(field2) from table2 group by field1
确保两个表中的字段数量及名称完全一样

解决方案3:

update 表1 set 字段1=b
from 
(select id,sum(字段2) b from  表2) a
where id=a.id
没试,你看看

解决方案4:

update 表1 set 字段1=(select sum(字段2) from 表2 where id2=id1 ) 这个样子是正确的

解决方案5:

UPDATE 表1 SET 字段1 = SUM(表2.字段2) FROM 表1 AS T1,表2 AS T2 WHERE T1.ID1=T2.ID2

解决方案6:

如果是access数据库:(中间使用temp临时表)
select * into temp from (SELECT id2,SUM(字段2) as f2 FROM 表2 group by id2)//建立temp
UPDATE 表1,temp SET 表1.字段1=temp.f2 WHERE 表1.id1=temp.id2//更新表1
DROP TABLE temp //删除临时表temp

解决方案7:

Create Table #T1 (ID Int, 
                  aa int)
Create Table #T2 (ID Int, 
                  bb int)
insert into #t1 select 1,0
union all select 2,      0
insert into #t2 select 1,      20
union all select 1,      50
union all select 1,      30
union all select 2,      40
union all select 2,      40
//以上为插入数据,删除临时表用DROP TABLE #T1
update #t1 set aa=(select sum(bb) from #t2 where #t1.id=#t2.id)
select * from #t1
 

解决方案8:

UPDATE 表1 SET 字段1 = (SELECT SUM(字段2) FROM 表2 WHERE ID2=表1.ID1)

解决方案9:

UPDATE 表1 SET 字段1 = (SELECT id2,SUM(字段2) FROM 表2 group by id2) WHERE 表1.id1=表2.id2
//随便这写的,没有试过....^_^

上一篇简单问题 如果在程序启动的时候把程序放到托盘中?
下一篇在原来表字段a,字段b 的基础上 动态的添加字段c c的结果等于a-b
明星图片
相关文章
《 请教一个组合查询语句》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)