SQL高手来,SQL多表两条件聚合查询

来源:百度知道 编辑:UC知道 时间:2024/06/06 05:36:17
我语法不对哈,
Select
year.pk_year_id
year.year_name
year.year_time
exam.pk_exam_id
exam.exam_name
exam.exam_time
exam.fk_year_id
INNER JOIN year.pk_year_id = exam.fk_year_id
WHERE MAX(year.pk_year_id) AND exam.exam_time(最晚的时间放上面)

所以自己用了中文的。

SELECT MAX(dbo.学期表.学期id),
dbo.学期表.[学年],
dbo.学期表.[学期],
dbo.考试表.[主键_考试ID],
dbo.考试表.[考试名称],
dbo.考试表.[考试时间],
dbo.考试表.[学期id]
FROM dbo.学期表,dbo.考试表
WHERE dbo.学期表.学期id = 考试表.[学期id] ORDER BY dbo.考试表.[考试时间] desc

命令完成。但是

啥啥,在选中列中无效。因为该列未包含在聚合函数中,并且没有GROUP BY子句。

请SQL 高手帮看下。随便说下多表查询带聚合和条件的语法。谢谢。

如果你select语句用到统计函数如sum()、max()z则需要group by 分组,所有没有函数过的字段都需要列到group by 后面,如下面sql就可执行了
SELECT MAX(dbo.学期表.学期id),
dbo.学期表.[学年],
dbo.学期表.[学期],
dbo.考试表.[主键_考试ID],
dbo.考试表.[考试名称],
dbo.考试表.[考试时间],
dbo.考试表.[学期id]
FROM dbo.学期表,dbo.考试表
WHERE dbo.学期表.学期id = 考试表.[学期id]
group by
dbo.学期表.[学年],
dbo.学期表.[学期],
dbo.考试表.[主键_考试ID],
dbo.考试表.[考试名称],
dbo.考试表.[考试时间],
dbo.考试表.[学期id]
ORDER BY dbo.考试表.[考试时间] desc