请问这个统计的sql语句如何写

sljz 2010-09-15 03:47:28
表1

名称 数量
------------
用户A 0
用户B 0
用户C 0



表2

名称 所属用户
------------
名称1 用户A
名称2 用户B
名称3 用户C
名称4 用户A
名称5 用户A
名称6 用户A


现在需要更新表1,查出表2中该用户的数量,即:
名称 数量
------------
用户A 4
用户B 1
用户C 1



...全文
143 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roni 2010-09-15
  • 打赏
  • 举报
回复
create table tb_1(名称 nvarchar(10), 数量 float)
create table tb_2(名称 nvarchar(10),所属用户 nvarchar(10))

insert into tb_1 values('用户A',0)
insert into tb_1 values('用户B',0)
insert into tb_1 values('用户C',0)

insert into tb_2 values('名称1','用户A')
insert into tb_2 values('名称2','用户B')
insert into tb_2 values('名称3','用户C')
insert into tb_2 values('名称4','用户A')
insert into tb_2 values('名称5','用户A')
insert into tb_2 values('名称6','用户A')


UPDATE tb_1 set 数量 = (select count(*) from tb_2 where tb_2.所属用户 = tb_1.名称)

select * from tb_1
own2sky 2010-09-15
  • 打赏
  • 举报
回复
select a.名称,isnull(count(所属用户),count(所属用户)) 数量
from 表1 a left join 表2 b
on a.名称=b.所属用户
group by a.名称
HSBOY86 2010-09-15
  • 打赏
  • 举报
回复
select a.名称,count(b.所属用户) as 所属用户
from 表1 a left join 表2 b
on a.名称=b.所属用户
group by a.名称
hovy_yang 2010-09-15
  • 打赏
  • 举报
回复

if object_id('tb1') is not null drop table tb1
go
create table tb1 ([名称] char(10) , [数量] int)
insert into tb1 select '用户A' , 0
union all select '用户B' , 0
union all select '用户C' , 0

if object_id('tb2') is not null drop table tb2
go
create table tb2 ([名称] char(10) , [所属用户] char(10))
insert into tb2 select '名称1' , '用户A'
union all select '名称2' , '用户B'
union all select '名称3' , '用户C'
union all select '名称4' , '用户A'
union all select '名称5' , '用户A'
union all select '名称6' , '用户A'

select * from tb1
结果
名称 数量
用户A 0
用户B 0
用户C 0

update tb1
set 数量 = b.数量
from tb1 a ,(select count(1) 数量,
所属用户
from tb2
group by 所属用户) b
where a.名称 = b.所属用户

select * from tb1
结果
名称 数量
用户A 4
用户B 1
用户C 1

drop table tb1 , tb2
crazyitboy 2010-09-15
  • 打赏
  • 举报
回复
create table tab1
(uname varchar(6),
num int
)
insert into tab1 values('用户A',0)
insert into tab1 values('用户B',0)
insert into tab1 values('用户C',0)

create table tab2
(tname varchar(6),
uname varchar(6)
)

insert into tab2 values ('名称1','用户A')
insert into tab2 values ('名称2','用户B')
insert into tab2 values ('名称3','用户C')
insert into tab2 values ('名称4','用户A')
insert into tab2 values ('名称5','用户A')
insert into tab2 values ('名称6','用户A')

用游标一行一行改
declare mycur cursor
for
select uname,count(*) from tab2 group by uname
declare @name varchar(6),@num int
open mycur
fetch next from mycur into @name,@num
while(@@fetch_status=0)
begin
update tab1 set num=@num where uname=@name
fetch next from mycur into @name,@num
end
close mycur
deallocate mycur

如果只是查询出你想要的结果
select uname,count(*) from tab2 group by uname
ws_hgo 2010-09-15
  • 打赏
  • 举报
回复
select a.名称,
isnull(count(1),0) 数量
from a left join b
on a.名称 = b.所属用户
group by a.名称
fengyun142415 2010-09-15
  • 打赏
  • 举报
回复

update 表1 set 数量=t.数量 from
(select 所属用户,count(1) as 数量
from 表2
group by 所属用户) t
where 表1.名称=t.所属用户
siegebaoniu 2010-09-15
  • 打赏
  • 举报
回复
update a
set 数量=b.数量
from 表1 a,(select 所属用户,count(所属用户)as 数量 from 表2 group by 所属用户)b
where a.名称=b.所属用户
dawugui 2010-09-15
  • 打赏
  • 举报
回复
如果A,B两表能一一对应,直接内连即可。

select a.名称 , count(1) 数量
from a , b
where a.名称 = b.所属用户
group by a.名称
baiying15 2010-09-15
  • 打赏
  • 举报
回复
update 表1
set 数量=b.数量
from 表1 as a,
(select 所属用户 as 名称,count(1)as 数量
from 表2
group by 所属用户)as b
where a.名称=b.名称
dawugui 2010-09-15
  • 打赏
  • 举报
回复
select a.名称 , isnull(count(1),0) 数量
from a left join b
on a.名称 = b.所属用户
group by a.名称
siegebaoniu 2010-09-15
  • 打赏
  • 举报
回复
select count(所属用户) from 表2 group by 所属用户
水族杰纶 2010-09-15
  • 打赏
  • 举报
回复
update a
set 数量=b.数量
from 表1 a,(select count(数量)数量,
所属用户
from 表1
group by 所属用户)b
where a.名称=b.所属用户
baiying15 2010-09-15
  • 打赏
  • 举报
回复
先顶一下;下面安心写代码

34,838

社区成员

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

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