[我正在尝试在SQL中使用带有内部联接的分组方式,但它会产生错误

问题描述 投票:0回答:1

您好,这是有效的sql语句,并且在SQL Server女士中正常工作。

select classes.Id, classes.className, classes.Level, classes.timing
from classes
inner join StudentClasses on classes.Id = StudentClasses.classId;

它产生的结果很好。

13  Trigonometry    Beginar     Morning
13  Trigonometry    Beginar     Morning
13  Trigonometry    Beginar     Morning
14  Maths           Advanced    Evening
15  Trigonometry    Advanced    Evening

现在我想按classes.Id对它们进行分组,但是当我尝试按以下方式使用分组依据时,它会产生错误:

select classes.Id, classes.className, classes.Level, classes.timing
from classes
inner join StudentClasses on classes.Id = StudentClasses.classId
group by classes.Id 
;

这是错误:

Msg 8120, Level 16, State 1, Line 1
Column 'classes.className' is invalid in the select list because it is not contained in either an 
aggregate function or the GROUP BY clause.
sql inner-join
1个回答
0
投票

您必须按所选的所有列分组,但汇总列除外。尝试以下。

如果有重复项,则可以使用distinct

select classes.Id, classes.className, classes.Level, classes.timing
from classes
inner join StudentClasses on classes.Id = StudentClasses.classId
group by classes.Id, classes.className, classes.Level, classes.timing 
;
© www.soinside.com 2019 - 2024. All rights reserved.