select distinct 学习.课程号,count(*) as 总人数 
from 学习,学生,课程 
where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 学习.课程号=(select 课程号 
from 学习 
group by 课程号 
having count(课程号)>10) 
order by 总人数 desc, 学习.课程号; 
错误:选择列表中的列 '学习.课程号' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。  
请问下这个错误产生的原因?怎么解决它? 我是一个数据库的初学者,请教高手帮我解决!!!

解决方案 »

  1.   

    order by 是按表中某字段排列表中数据 
    group by 是按某些字段分类。 例如按 
    1.按年龄排序表中的记录 
    select * from users order by age 
    2.按年龄分类表中数据 
    (就是求各个年龄的人数) 
    select age,count(*) as number1 from users group by age看这个行不行:
    select distinct 学习.课程号,count(*) as 总人数 
    from 学习,学生,课程 
    where 学生.学号=学习.学号 and 学习.课程号=课程.课程号 and 学习.课程号=(select 课程号 
    from 学习 
    group by 课程号 
    having count(课程号)>10) 
    order by 总人数,学习.课程号 desc;
      

  2.   

    出现这个错误,为什么,参见
    http://topic.csdn.net/u/20080726/23/45568f53-069f-472e-80b0-1361a72109de.html
    最后一个问题。
      

  3.   

    group by 课程号 
    有问题
    没有制定是哪个表的吧?