-- sql面试题 -- 1.用一条SQL语句 查询出每门课都大于80分的学生姓名 -- table:t_fenshu -- name kecheng fenshu -- 张三 语文 81 -- 张三 数学 75 -- 李四 语文 76 -- 李四 数学 90 -- 王五 语文 81 -- 王五 数学 100 -- 王五 英语 90 -- 答案 SELECT DISTINCT name FROM t_fenshu WHERE name NOT IN (SELECT DISTINCT name FROM t_fenshu WHERE fenshu <= 80); -- 答案2 SELECT name FROM t_fenshu GROUP BY name HAVING MIN(fenshu) > 80; -- 2. 删除除了id不同,其它字段值相同的冗余学生信息 -- table:t_student -- id stu_id name course_id course_name score -- 1 2005001 张三 0001 数学 69 -- 2 2005002 李四 0001 数学 89 -- 3 2005001 张三 0001 数学 69 -- 答案 DELETE t_student WHERE id NOT IN (SELECT MIN(id) FROM t_student GROUP BY stu_id,name,course_id,course_name,score); -- 3. abcd代表四支球队,写sql找出进行比赛的所有组合方式 -- table:t_team -- name -- a -- b -- c -- d -- 答案 SELECT t1.name, t2.name FROM t_team t1,t_team t2 WHERE t1.name < t2.name; -- 4.查下面的表,查出结果如下: -- year m1 m2 m3 m4 -- 1991 1.1 1.2 1.3 1.4 -- 1992 2.1 2.2 2.3 2.4 -- table:t_amount -- year month amount -- 1991 1 1.1 -- 1991 2 1.2 -- 1991 3 1.3 -- 1991 4 1.4 -- 1992 1 2.1 -- 1992 2 2.2 -- 1992 3 2.3 -- 1992 4 2.4 -- 答案: SELECT year, (SELECT amount FROM t_amount t1 WHERE month = 1 AND t1.year = t2.year) AS m1, (SELECT amount FROM t_amount t1 WHERE month = 2 AND t1.year = t2.year) AS m2, (SELECT amount FROM t_amount t1 WHERE month = 3 AND t1.year = t2.year) AS m3, (SELECT amount FROM t_amount t1 WHERE month = 4 AND t1.year = t2.year) AS m4 FROM t_amount t2 GROUP BY year; -- 5.exist关键字:https://segmentfault.com/a/1190000008709410