日期:2014-05-17  浏览次数:21055 次

关于聚合函数max和distinct
菜鸟求教:我建了两个表author和books,数据中一个作者写了两本书,为了不重复出现作者名字于是有了第一个问题的写法,我不明白distinct的用法,于是以第二个问题为例问下。求高手指点!!
第一个问题
select aname,max(age),max(bname),max(press_name)
  2 from author,books
  3 where age<(select avg(age) from author)
  4 and author.a_id=books.author_id group by aname
其中bname是书名,press-name是出版社名,我不明白max的作用?单纯为了能够使用group by吗?
第二个问题
select distinct aname,age,bname,press_name
  2 from author,books
  3 where age<(select avg(age) from author)
  4 and author.a_id=books.author_id;
这里面distinct是不是只有aname、age、bname和pressname的内容都用重复的时候才能将两个数据一起显示?

------解决方案--------------------
1、根据作者求age最大值,max就是求最大值
2、distinct过滤掉所有字段都重复的数据。distinct aname,age,bname,press_name 当三个字段不重复的时候数据才显示