SQLSERVER2005数据库查询

sxinhe 2013-04-18 04:02:21
大家好,我的问题是:
我有两张表 A B
A表中的数据
ID NAME
1 王老师
2 李老师
3 赵老师

B表中的数据
NAME GRADER
王老师 三年级一班
王老师 三年级二班
王老师 三年级三班
赵老师 五年级一班
赵老师 五年级二班

然后我想写一条SQL语句,查询表A的字段 和表B中的数量

ID Name COUNT
1 王老师 3
2 李老师 0
3 赵老师 2

这条SQL语句怎么写呢? 谢谢大家了。

...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2013-04-18
  • 打赏
  • 举报
回复

create table A表
(ID int, NAME varchar(20))

insert into A表 
select 1, '王老师' union all
select 2, '李老师' union all
select 3, '赵老师'

create table B表
(NAME varchar(20), GRADER varchar(20))

insert into B表
select '王老师', '三年级一班' union all
select '王老师', '三年级二班' union all
select '王老师', '三年级三班' union all
select '赵老师', '五年级一班' union all
select '赵老师', '五年级二班'


select ID,
       NAME,
       (select count(1) from B表 b where b.NAME=a.NAME) 'COUNT'
 from A表 a

/*
ID          NAME                 COUNT
----------- -------------------- -----------
1           王老师                  3
2           李老师                  0
3           赵老师                  2

(3 row(s) affected)
*/
發糞塗牆 2013-04-18
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-04-18 16:04:43
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
--	Jun 17 2011 00:54:03 
--	Copyright (c) Microsoft Corporation
--	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------------------------------------------
--> 测试数据:[A]
if object_id('[A]') is not null drop table [A]
go 
create table [A]([ID] int,[NAME] varchar(6))
insert [A]
select 1,'王老师' union all
select 2,'李老师' union all
select 3,'赵老师'
--> 测试数据:[B]
if object_id('[B]') is not null drop table [B]
go 
create table [B]([NAME] varchar(6),[GRADER] varchar(10))
insert [B]
select '王老师','三年级一班' union all
select '王老师','三年级二班' union all
select '王老师','三年级三班' union all
select '赵老师','五年级一班' union all
select '赵老师','五年级二班'
--------------开始查询--------------------------

--select * from [B]
--------------开始查询--------------------------

SELECT a.*,ISNULL(b.[count] ,0)[count]
from [A] a LEFT  JOIN (SELECT NAME ,count(1) [count] FROM B GROUP BY NAME)b ON a.NAME=b.name
----------------结果----------------------------
/* 
ID          NAME   count
----------- ------ -----------
1           王老师    3
2           李老师    0
3           赵老师    2
*/
sxinhe 2013-04-18
  • 打赏
  • 举报
回复
大哥大姐们帮帮忙吧。。在线等呢。

22,209

社区成员

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

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