求个更新语句

南山明月 2010-05-27 11:30:27
表A
MainCode,MemberCode,Name,Relation

852001 85200102 李四 子女
852001 85200103 张小三 子女
852001 85200104 张三 户主

852002 85200201 老王 户主
852002 85200202 小王 子女
852002 85200203 王小 子女
表B
MainCode,Name
852001 李四
852002 老王
我想把 表A.MainCode=表B.MainCode
and A.Name=B.Name 而且表A成员编号(MemberCode)最后两位没有从01开始编号的,最小一个编号改为最后从01
我想要的结果就是把表A中最后两位最小不是从01开始的 852001一户中最小序号85200102 改成85200101
"852001 85200102 李四 子女"改成:
852001 85200101 李四 子女

...全文
108 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
南山明月 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pt1314917 的回复:]
SQL code
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (MainCode int,MemberCode varchar(10),Name varchar(20),Relation varchar(20))
insert into [tb]
select 8520……
[/Quote]就是这个效果,但是这个MemberCode<=a.MemberCode,感觉不是很好
pt1314917 2010-05-27
  • 打赏
  • 举报
回复
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (MainCode int,MemberCode varchar(10),Name varchar(20),Relation varchar(20))
insert into [tb]
select 852001,'85200102','李四','子女' union all
select 852001,'85200103','张小三','子女' union all
select 852001,'85200104','张三','户主' union all
select 852002,'85200201','老王','户主' union all
select 852002,'85200202','小王','子女' union all
select 852002,'85200203','王小','子女'


update tb set membercode=left(membercode,6)+(select right('00'+ltrim(count(1)),2) from tb where maincode=a.maincode and MemberCode<=a.MemberCode)
from tb a


select * from [tb]
--结果:
MainCode MemberCode Name Relation
----------- ---------- -------------------- --------------------
852001 85200101 李四 子女
852001 85200102 张小三 子女
852001 85200103 张三 户主
852002 85200201 老王 户主
852002 85200202 小王 子女
852002 85200203 王小 子女
jwdream2008 2010-05-27
  • 打赏
  • 举报
回复
Update A set A.MemberCode=852001+'01' From A,B
where A.MainCode=B.MainCode
And A.Name=B.Name
And Right(A.MemberCode,2)<>'01'

???
chuifengde 2010-05-27
  • 打赏
  • 举报
回复
??update a set MemberCode=Left(MemberCode,6)+'01' from b wher a.MainCode=b.MainCode and a.name=b.name
jwdream2008 2010-05-27
  • 打赏
  • 举报
回复
表述的不清楚啊!
南山明月 2010-05-27
  • 打赏
  • 举报
回复
表A
MainCode,MemberCode,Name,Relation

852001 85200102 李四 子女
852001 85200103 张小三 子女
852001 85200104 张三 户主

852002 85200201 老王 户主
852002 85200202 小王 子女
852002 85200203 王小 子女
表B
MainCode,Name
852001 李四
852002 老王
我的意思是参照表B,当表A中成员在表B中存在(也就是MainCode相同,Name相同)
而且此成员在表A中成员编号(MemberCode)最后两位不是从01开始的,最后两位就把他改成从01开始
南山明月 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pt1314917 的回复:]
引用 5 楼 qscandwh 的回复:
引用 4 楼 pt1314917 的回复:
SQL code
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (MainCode int,MemberCode varchar(10),Name varchar(20),Relatio……
[/Quote]

表A
MainCode,MemberCode,Name,Relation

852001 85200102 李四 子女
852001 85200103 张小三 子女
852001 85200104 张三 户主

852002 85200201 老王 户主
852002 85200202 小王 子女
852002 85200203 王小 子女
表B
MainCode,Name
852001 李四
852002 老王
我的意思是参照表B,当表A中成员在表B中存在(也就是MainCode相同,Name相同)
而且此成员在表A中成员编号(MemberCode)最后两位不是从01开始的
谢谢!

csmark 2010-05-27
  • 打赏
  • 举报
回复
路过接分..
永生天地 2010-05-27
  • 打赏
  • 举报
回复

if object_id('表A') is not null drop table 表A
go
-------------
create table 表A
(MainCode varchar(10),MemberCode varchar(10),Name varchar(10),Relation varchar(10))
insert 表A
select '852001','85200102','李四',' 子女' union all
select '852001','85200103','张小三',' 子女' union all
select '852001','85200104','张三',' 户主' union all

select '852002','85200201','老王',' 户主' union all
select '852002','85200202','小王',' 子女' union all
select '852002','85200203','王小',' 子女'

--------------
declare @i int ,@MemberCode varchar(10),@MainCode varchar(10)
update 表A set
@i=(case when MainCode=@MainCode then @i+1 else 1 end),
@MainCode=MainCode,
MemberCode=left(MemberCode,6)+right('00'+ltrim(@i),2)
--------------
select * from 表A
/*
MainCode MemberCode Name Relation
---------- ---------- ---------- ----------
852001 85200101 李四 子女
852001 85200102 张小三 子女
852001 85200103 张三 户主
852002 85200201 老王 户主
852002 85200202 小王 子女
852002 85200203 王小 子女

(所影响的行数为 6 行)

*/
pt1314917 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qscandwh 的回复:]
引用 4 楼 pt1314917 的回复:
SQL code
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (MainCode int,MemberCode varchar(10),Name varchar(20),Relation varchar(20))
insert……
[/Quote]
倒,那你想怎么样?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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