回答

收藏

从另一个表到结果行选择每行的计数

技术问答 技术问答 271 人阅读 | 0 人回复 | 2023-09-14

表格如下:
$ f; f, E( c' z0 L1 SCREATE TABLE [dbo].[Classes](    [ClassId] [int] NOT NULL,   [ClassName] [nvarchar](50) NOT NULL,CONSTRAINT [PK_Classes] PRIMARY KEY CLUSTERED  [ClassId] ASC)WITH (PAD_INDEX  = OFF,STATISTICS_NORECOMPUTE  = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS  = ON,ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[Students](    [StudentId] [int] NOT NULL,            [ClassId] [int] NOT NULL,CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED  [StudentId] ASC)WITH (PAD_INDEX  = OFF,STATISTICS_NORECOMPUTE  = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS  = ON,ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]GOALTER TABLE [dbo].[Students]  WITH CHECK ADD  CONSTRAINT [FK_Students_Classes] FOREIGN KEY([ClassId])REFERENCES [dbo].[Classes] ([ClassId])GOALTER TABLE [dbo].[Students] CHECK CONSTRAINT [FK_Students_Classes]GO我想获得班级列表和每个班级-每个班的学生人数。我怎样才能做到这一点?
" _" T6 b/ T+ X9 m                                                               
+ Z1 a: K) s6 q8 \8 x    解决方案:                                                               
+ R4 U7 X; h% R! g# t! W                                                                你需要这样做-
8 T6 g9 w$ N" ?$ U1 _7 U3 jSELECT C.ClassId,C.ClassName,count(S.StudentId) AS studentCountFROM CLASSES C LEFT JOIN STUDENTS S ON (C.ClassId=S.ClassId)GROUP BY C.ClassId,C.ClassName
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则