第七章 组合查询

组合查询也就是查询嵌套

 

练习:

 

1、查询入学年龄在18-20的女生或者未输入性别的,实际年龄小的要排在后面
SELECT * FROM t_stu WHERE s_age BETWEEN 18 AND 20 AND s_sex ='女' OR s_sex IS NULL ORDER BY YEAR(NOW(2012-04-26))-YEAR(s_birthday) DESC


2、查询班级名称、学生姓名、性别、缴费(要求显示单位:元),相同班级的要放在一起,姓名根据字典顺序排列。
SELECT s_c_id,(SELECT c_name FROM t_class WHERE c_id=s_c_id) 班级名称,s_name,s_sex,CONCAT(s_moeny,'元')  缴费 FROM t_stu ORDER BY s_c_id,s_name;


3、查询各班名称和人数
SELECT c_name,(SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) FROM t_class

4、查询各班名称和人数,但人数必须不少于2,人数多的放在前面
SELECT c_name,(SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) FROM t_class WHERE (SELECT COUNT(s_c_id) FROM t_stu WHERE s_c_id=c_id) >=2

5、查询1988年出生的有哪些学生。
SELECT s_name FROM t_stu WHERE s_birthday LIKE'1988%'

6、查询男生和女生人数,没有输入性别的当作男
SELECT s_sex,COUNT(s_name) FROM t_stu WHERE s_sex ='女'
UNION
SELECT s_sex,COUNT(s_name) FROM t_stu WHERE s_sex ='男'OR s_sex IS NULL

7、查询没有人员的班级。
SELECT c_name FROM t_class WHERE NOT EXISTS(SELECT s_id FROM t_stu WHERE s_c_id=c_id)

8、查询入学年龄在20以上(不包含20)的同学信息
SELECT (SELECT c_name FROM t_class WHERE s_c_id=c_id) 班级,s_name 姓名,s_sex 性别,s_birthday 出生日期,s_age 入学年龄,s_money 缴费 FROM t_stu WHERE s_age > 20

9、查询班级平均入学年龄在20以上的班级
SELECT c_name FROM t_class WHERE (SELECT AVG(s_age) FROM t_stu WHERE c_id=s_c_id ) >20

posted @ 2012-04-27 07:30  菜鸟@天堂  阅读(220)  评论(0编辑  收藏  举报