仙人指路:个简单的SQL语句如何写?

ycdch 2000-06-20 03:49:00
本人在数据库编程中碰到一个不知如何写的SQL语句,有请高手“仙人指路”:
数据的情况如下:
I表 II表
name number name number
b 12 b 1
c 13 d 7
d 16 b 2
要求:I表number减去II表中相关记录的number;II表name有重复,但都是I表中name(即多对一的关系);
操作后I表:b 9;c 13;d 9;

请问:其SQL语句如何写?急!!急!! 谢!!谢!!
chervon@sina.com
...全文
321 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fxx 2000-06-29
  • 打赏
  • 举报
回复
Update I SET Number = (SELECT NVL(SUM(II.Number),0) FROM II
WHERE I.Name = II.Name);
sSam 2000-06-27
  • 打赏
  • 举报
回复
ycdch 的写法对吗,我看,不见得
还是采用TANGHUAN的办法吧
guofupei 2000-06-23
  • 打赏
  • 举报
回复
create view view2 as
select distinct name,sum(number) number from table2;
create view result as
select name,a1.number-a2.number
from table1 a1,view2 a2
where a1.name(+)=a2.name

this is for oracle
i want it have som help for u
!
ycdch 2000-06-23
  • 打赏
  • 举报
回复
假设表1名为Table1, 表2名为table2 我们通常在SQL Server或Oracle这样写:
select name, sum(number) number
from (
select name, number number
from table1
union all
select name, - sum(number) number
from table2
group by name
) order by 1
sSam 2000-06-21
  • 打赏
  • 举报
回复
另外,如果你用的是db2,那么以上语句就是正确的;其他的数据库吗,你就想办法改写吧
sSam 2000-06-21
  • 打赏
  • 举报
回复
update I set number=number-(select sum(number) from II where II.name=I.name)
这是个错误的语句,但就是这个意思;用循环去做吧
tanghuan 2000-06-21
  • 打赏
  • 举报
回复
如果II表的数据量小用sSam的方法好,因为他会使用多次子查询

如果II表的数据量大用下面的语句将使用一次子查询和一次连接

update I set I.number=I.number - temp.number
from I,(select name,sum(number) as number
from II
group by name
) as temp
where I.name=temp.name
swordmanli 2000-06-21
  • 打赏
  • 举报
回复
如果数据量较大:(在SQL Server中)
select name, sum(number)
into #tmp
from I
group by name

union all
select name, -sum(number)
from II
group by name

select name, sum(number)
from III
group by name

delete I

insert I
select *
from #tmp

这种方法的速度要快于连接后,作update
corao 2000-06-21
  • 打赏
  • 举报
回复
利用中间表(group by II表)
ycdch 2000-06-20
  • 打赏
  • 举报
回复
感谢各位的回复!!
以上的信息不全:本人用的是vb6。
感谢TopHead,gx_sunny,以及一切光顾/关照本问题的“仙人”。
gx_sunny 2000-06-20
  • 打赏
  • 举报
回复
我想问一句,你用的是什么数据库开发工具,比如VB,DELPHI什么的?
TopHead 2000-06-20
  • 打赏
  • 举报
回复
我是用Access试验的,首先将表II的数据按name汇总成表III,其中的内容为
name number
b 3
d 7

然后通过下面的sql能得到你想要的结果:
SELECT I.name,I.number-iif(isnull(III.number),0,III.number) from I left join III on I.name=III.name

不知有没有更好的办法:)
本资源是以压缩包的形式的, 里面是一个 “TXT”的文档, 文档中 有“百度云” 分享的链接, 这本书太大,上传不上来,所以以这样的方式上传。永久有效,欢迎下载。 本书作者: 张志强,胡君; 出版社:电子工业出版社 内容简介: 本书针对初学和自学读者的特点,以通俗易懂的语言介绍C#语言及其基础开发。内容包括语言的发展、环境配置、基本语法、流程控制语句、字符串处理、数组、图形界面设计、输入/输出、处理异常和连接数据库。本书运用大量示例,让读者在实战中体会编程的乐趣。本书适合想从事软件开发的入门人员、C#自学者及初级软件程序员和信息技术人员阅读。 章节目录: 第一篇 开发环境与C#语言基础 第一章 仙人指路: C#与.NET Framework简介 1.1 什么是.NET Framework 1.1.1 .NET Framework结构 1.1.2 .NET Framework的优点 1.2 什么是C# 1.2.1 C#语言的优点 1.2.2 C#语言的特点 1.3 C#的开发工具Visual Studio 1.3.1 Visual Studio 2010下载和安装 1.3.2 Visual Studio的特点 1.3.3 Visual Studio 解决方案和项目文件的组织结构 1.4 ***个C#程序:Hello World 1.4.1 认识Visual Studio .NET开发环境 1.4.2 ***个Windows Console控制台应用程序 1.4.3 ***个Windows Form窗体程序 1.4.4 ***个ASP.NET程序 1.4.5 源代码简短分析 1.5 C#程序的特点 1.6 小结 1.7 习题 第2章 抛砖引玉:C#程序设计基础 第2篇 C#面向对象编程 第3章 羽翼丰满:C#的面向对象 第4章 双管齐下:抽象类和接口 第5章 无懈可击:调试异常与编码标准 第6章 添砖加瓦:字符、字符串 处理与正则表达式 第7章 兵分两路:数组与集合 第8章 双龙出海:代理和事件 第3篇 Windows程序编程 第9章 以逸待劳:Windows窗体应用程序

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧