请教:该如何更新这个表。

jycjd 2003-10-16 09:35:46
现有如下两个表
表一(费用明细fy): 表二(用户资料userd) :
uid dian uname charge itype ... uid dian uname
001 3652 bill 25.00 03 001 3652 bill
001 13.70 05 002 4783 nancy
001 5.00 10 003 5872 lussy
002 4783 nancy 27.12 03 004 1128 davel
002 57.55 02 ...
...
表二(用户资料)的uid是唯一的,现在要根据用户资料表把表一(费用明细)的所有null填满,这应该不是个复杂的问题,我是这样写的:
update fy
set dian=userd.dian,uname=userd.uname
from fy,userd
where userd.uid=fy.uid
两个表记录都比较长,fy有50多万条,userd有10万多条记录。
执行时出现过两个问题:
1.Timeout expired .我通过“工具”→“选项”→“高级”已经把所有“超时”的设置都设为了0,但问题仍解决不了。
2.我通过选择插入新表,结果生成的新表记录数又与fy表记录数不同,并且sum(charge )比原来的少。我的语句是这样写的:
SELECT fy.uid,userd.dian,userd.uname,fy.charge,fy.itype
into newfy
FROM fy LEFT OUTER JOIN
userd ON fy.uid = userd.uid
请教高手该如何解决这个问题
...全文
54 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
--查询生成新表,试试:

SELECT uid=isnull(a.uid,b.uid),b.dian,b.uname,a.charge,a.itype
into newfy
FROM fy a full JOIN userd b ON a.uid = b.uid
tohen 2003-10-16
  • 打赏
  • 举报
回复
大力好強,學習
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
--试试在查询分析中执行:

update fy
set dian=b.dian,uname=b.uname
from fy a inner join userd b on a.uid=b.uid
and isnull(a.dian,'')='' or isnull(a.uname,'')=''
tonyzhengjq 2003-10-16
  • 打赏
  • 举报
回复
学习一下
SilverSands 2003-10-16
  • 打赏
  • 举报
回复
SELECT fy.uid,userd.dian,userd.uname,fy.charge,fy.itype
FROM fy right OUTER JOIN
userd ON fy.uid = userd.uid
pengdali 2003-10-16
  • 打赏
  • 举报
回复
你对两个表的id列加索引,选中Microsoft SQL Servers-->工具栏,工具-->选项-->高级-->查询超时-->改为0-->从起sqlserver
txlicenhe 2003-10-16
  • 打赏
  • 举报
回复
1:看不出有什么问题。
是不是有其它未提交事务?或者触发器影响?
2: 如果超时改为0,不应该报超时错啊?
jycjd 2003-10-16
  • 打赏
  • 举报
回复
先谢谢各位,我在查询分析器里用同样的代码已经实现了,加了索引后执行速度大大提高。但在企业管理器里仍然有timeout expired问题,是在如你们所说的把查询设置改为0了后重启了SQL Server的,我不知道为什么会那样

34,576

社区成员

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

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