最简单的(马上结帖)

simonasp 2003-12-04 03:01:48
表1
----------------------------------
id user data
1 ss 2
2 aa 3
3 rr 10

表2
----------------------------------
id data user
2 sdasd ss
3 21321 aa
4 wqeq ss

怎么根据在“表2”的user里用户,在“表1”的data加1
...全文
44 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--下面是数据测试

--测试数据
declare @表1 table(id int,[user] varchar(10),data int)
insert into @表1
select 1,'ss',2
union all select 2,'aa',3
union all select 3,'rr',10

declare @表2 table(id int,data varchar(10),[user] varchar(10))
insert into @表2
select 2,'sdasd','ss'
union all select 3,'21321','aa'
union all select 4,'wqeq','ss'

--更新方法2.
update @表1 set data=a.data+b.aa
from @表1 a join(select [user],aa=count(*) from @表2 group by [user]) b on a.[user]=b.[user]

--显示处理结果
select * from @表1

/*--测试结果

id user data
----------- ---------- -----------
1 ss 4
2 aa 4
3 rr 10

(所影响的行数为 3 行)
--*/


推荐第二种方法.
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--下面是数据测试

--测试数据
declare @表1 table(id int,[user] varchar(10),data int)
insert into @表1
select 1,'ss',2
union all select 2,'aa',3
union all select 3,'rr',10

declare @表2 table(id int,data varchar(10),[user] varchar(10))
insert into @表2
select 2,'sdasd','ss'
union all select 3,'21321','aa'
union all select 4,'wqeq','ss'

--更新方法1.
update @表1 set data=data+isnull((select count(*) from @表2 where [user]=a.[user]),0)
from @表1 a

--显示处理结果
select * from @表1

/*--测试结果

id user data
----------- ---------- -----------
1 ss 4
2 aa 4
3 rr 10

(所影响的行数为 3 行)
--*/
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--或:
update 表1 set data=a.data+b.aa
from 表1 a join(select [user],aa=count(*) from 表2 group by [user]) b on a.[user]=b.[user]
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--更正:
update 表1 set data=data+isnull((select count(*) from 表2 where [user]=a.[user]),0)
from 表1 a
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
--或:
update 表1 set date=date+case when exists(select 1 from 表2 where user=a.user) then 1 else 0 end
from 表1 a
simonasp 2003-12-04
  • 打赏
  • 举报
回复
我试了不行,表2中有2个ss可是在表1中只加了一次
victorycyz 2003-12-04
  • 打赏
  • 举报
回复
是不是这个意思:
update 表1 set data=data+T.su from 表1 a join (select [user],count(*) as su from 表2 group by [user]) T on a.user=T.user
zjcxc 2003-12-04
  • 打赏
  • 举报
回复
update 表1 set date=a.date+1
from 表1 a join 表2 on a.user=b.user
txlicenhe 2003-12-04
  • 打赏
  • 举报
回复

update 表1 set date = date+1
where user in (select user from 表2)
txlicenhe 2003-12-04
  • 打赏
  • 举报
回复
udpate a set a.date = a.date+1
from 表1 a
join 表2 b on a.user = b.user

27,579

社区成员

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

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