请高手帮忙帮我看个SQL语句 :聚合不应出现在 WHERE 子句中

小赵 2007-07-02 04:41:08
这个语句是是分页在第二页时候出现如下错误提示:
聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

我的理解是组合这种分页的sql语句不能联合表查询:即
from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d
但是我现在的数据必须从这三个表中得出,不晓得有什么样的解决办法!
select top 20 a.SysID,a.CoursesCode,a.CoursesDay,a.CoursesSession,a.CoursesLocation,a.Credit,c.Student_Id,c.crtdate,c.Credit,c.FinalScore,d.Student_LastName,d.Student_ClassId,d.Student_Job,d.Student_No,d.crtdate from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d where a.SysID<(select min(a.SysID) from (select top 20 a.SysID from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d where a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME' order by a.SysID desc) as tblTemp) And a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME' order by a.SysID desc

谢谢!!

...全文
468 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyzloveme 2010-04-20
  • 打赏
  • 举报
回复
order by a.SysID desc 改为order by SysID desc
order by 后面的字段不能加前缀
小赵 2007-07-02
  • 打赏
  • 举报
回复
把min(a.SysID) 改为 min(SysID) 我有试过
这样min(tblTemp.SysID)这样也试过,没有报错,但是也没有数据出来

谢谢楼上两位的解答
lwl0606 2007-07-02
  • 打赏
  • 举报
回复
select top 20 a.SysID,a.CoursesCode,a.CoursesDay,a.CoursesSession,a.CoursesLocation,a.Credit,
c.Student_Id,c.crtdate,c.Credit,c.FinalScore,d.Student_LastName,d.Student_ClassId,d.Student_Job,d.Student_No,d.crtdate
from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d

where a.SysID<(select min(SysID) from (select top 20 a.SysID from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d where a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME' order by a.SysID desc) as tblTemp)
And a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME'
order by a.SysID desc

这样试试,逻辑上没错,可能是表名引用有问题,吧 min(a.SysID) 改为 min(SysID)
chuifengde 2007-07-02
  • 打赏
  • 举报
回复
min(a.SysID)====>min(SysID)
小赵 2007-07-02
  • 打赏
  • 举报
回复
为了看清楚些
我把语句整理了一下

select top 20 a.SysID,a.CoursesCode,a.CoursesDay,a.CoursesSession,
a.CoursesLocation,a.Credit,c.Student_Id,c.crtdate,c.Credit,c.FinalScore,
d.Student_LastName,d.Student_ClassId,d.Student_Job,d.Student_No,d.crtdate
from
mba_Courses a,mba_Courses_Student c,mba_StudentBrief d
where
a.SysID<(select min(a.SysID) from
(select top 20 a.SysID from mba_Courses a,mba_Courses_Student c,mba_StudentBrief d
where a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME' order by a.SysID desc)
as tblTemp)
And a.SysID=c.BaseCourses_ID AND c.Student_Id=d.Student_ID AND a.CoursesCode='ME' order by a.SysID desc

22,209

社区成员

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

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