请教存储过程

cindyAng 2006-04-11 07:04:42
表A,字段如下No(varchar),Name(varchar),State(varchar).
No Name State
1 ming 1
2 logn 0
3 exi 1
4 esd 0
表B,结构同表A
No Name State
1 ming 1
2 logn 0
3 exi 1
4 esd 0
如何从表A检索记录实现更新表B
更新的结果如下
No Name State
1 -ming 1
2 -logn 0
3 -exi 1
4 -esd 0
1 ming 1
2 logn 0
3 exi 1
4 esd 0
规则如下
表A的State为1的更新相应记录使Name字段前面加个“-”符
同时复制之前的那条记录到自已表中
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cindyAng 2006-04-12
  • 打赏
  • 举报
回复
邹建正解,其实这里是要遍历整个表A检查a.state=1,都要更新相应B表的记录的,这样的话用游标吗?事务处理?更新完表B后又要将表A的state状态变为2.这样的话又怎么处理呢?谢谢
zjcxc 2006-04-12
  • 打赏
  • 举报
回复
-- 更新完表B后又要将表A的state状态变为2

-- 那就再加多一个 update 语句
update a set state=2
from b,a
where a.no=b.no and a.state=1
zjcxc 2006-04-12
  • 打赏
  • 举报
回复
-- 遍历整个表A检查a.state=1,都要更新相应B表的记录的
update b set name='-'+b.name
from b,a
where a.no=b.no and a.state=1


-- 这个update 会自动遍历, 而且它本身就是在一个事务中, 所以你不需要做事务处理.
zjcxc 2006-04-11
  • 打赏
  • 举报
回复
由于是两个不同的操作, 因此不可能一句实现.
zjcxc 2006-04-11
  • 打赏
  • 举报
回复
-- 表A的State为1的更新相应记录使Name字段前面加个“-”符
update b set name='-'+b.name
from b,a
where a.no=b.no and a.state=1

-- 同时复制之前的那条记录到自已表中(如果只复制被更新的)
insert b select a.*
from b,a
where a.no=b.no and a.state=1
zjcxc 2006-04-11
  • 打赏
  • 举报
回复
-- 表A的State为1的更新相应记录使Name字段前面加个“-”符
update b set name='-'+b.name
from b,a
where a.no=b.no and a.state=1

--同时复制之前的那条记录到自已表中
insert b select * from A
cindyAng 2006-04-11
  • 打赏
  • 举报
回复
就是被更新的那条记录要原样重新插入到表B自已,注意要的是这个步骤
撸大湿 2006-04-11
  • 打赏
  • 举报
回复
--表A的State为1的更新相应记录使Name字段前面加个“-”符

update b set name='-'+namefrom 表A,表B b where b.name=a.name and a.state=1


--同时复制之前的那条记录到自已表中
不懂啥意思
lsqkeke 2006-04-11
  • 打赏
  • 举报
回复
update b set Name='-'+Name from 表A a,表B b where a.Name=b.Name and a.state=1
insert 表B select * from 表A

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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