导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

数据库的更新(在线等待)

yyouyou 2005-09-15 06:04:19
现有两张表A,B,字段如下
A:b_id(fk) a_id(pk)
B: b_id(pk) s_id type

现在想将更新A表中的b_id和B表中b_id内容。
更新规则是:将B表中类型(type)为 C 的s_id字段的内容赋值给B表中的b_id,并且A表中相应的b_id也需要更改。
更新后的错误不用考虑,其实b_id是是s_id的子串。

各位高手帮帮忙,我已经晕了:(
...全文
81 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyouyou 2005-09-15
不好意思,A表的更新结果最后一项写错了应该是
A:b_id(fk) a_id(pk)
55555 ggggg
回复
yyouyou 2005-09-15
回:zlp321002
假设,更新前
A:b_id(fk) a_id(pk)
11 aaaaa
22 bbbbb
33 ccccc
44 ddddd
55 eeeee
11 fffff
55 ggggg


B: b_id(pk) s_id type
11 111111 a
22 222222 b
33 333333 c
44 444444 d
55 555555 a
66 666666 b
77 777777 c
88 888888 d
现在需要对B表中type为a进行更新,则最终更新结果为
A:b_id(fk) a_id(pk)
11111 aaaaa
22 bbbbb
33 ccccc
44 ddddd
55555 eeeee
11111 fffff
55 ggggg


B: b_id(pk) s_id type
11111 111111 a
22 222222 b
33 333333 c
44 444444 d
55555 555555 a
66 666666 b
77 777777 c
88 888888 d
你先更新了B表,那A表中的b_id无法在B表中找到相同的b_id,那么A表将不能更新。并且你的更新
语句没有两表关联,我想应该还是同 wgsasd311(自强不息) 和 ReViSion(和尚) 那样进行
“and A.b_id=B.b_id”
回复
zlp321002 2005-09-15
--回:zlp321002 如果先更新了B,那对应的A就找不到了啊,
更新B的时候,我没有操作A表

--就是s_id的内容只需要前面5个字符串赋值给b_id,并不是全部内容,
Update B Set b_id=substring(s_id,1,5) from B where type='C'

update A set b_id=sustring(B.s_id,1,5) from B where B.type='C'
回复
yyouyou 2005-09-15
不好意思,还忘了一点条件,就是s_id的内容只需要前面5个字符串赋值给b_id,并不是全部内容,等会我在加50分
回复
yyouyou 2005-09-15
回:zlp321002 如果先更新了B,那对应的A就找不到了啊,
回复
yyouyou 2005-09-15
可以一条语句就解决吗?vivianfdlpw() 的方法倒是不错
回复
ReViSion 2005-09-15
update A set b_id=B.s_id from A, B where B.type='C' and A.bid=B.bid
Update B Set b_id=s_id from B where type='C'
回复
wgsasd311 2005-09-15
--更新 Try
update A set b_id=B.s_id from A, B where B.type='C' and A.bid=B.bid
Update B Set b_id=s_id from B where type='C'
回复
vivianfdlpw 2005-09-15
A中b_id设置级联更新
然后Update B Set b_id=s_id from B where type='C'
回复
zlp321002 2005-09-15
--更新 Try
Update B Set b_id=s_id from B where type='C'

update A set b_id=B.s_id from B where B.type='C'
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告