打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于面试总结6-SQL经典面试题

前言

用一条SQL 语句查询xuesheng表每门课都大于80 分的学生姓名,这个是面试考sql的一个非常经典的面试题

having和not in

查询 xuesheng表每门课都大于80 分的学生姓名

namekechengscore
张三语文81
张三数学73
李四语文86
李四数学90
王五数学89
王五语文88
王五英语96

解决办法一: having

如果不考虑学生的课程少录入情况(比如张三只有2个课程,王五有3个课程)

SELECT name FROM xuesheng GROUP BY name HAVING MIN(score)> 80

如果考虑学生的课程数大于等于3的情况

SELECT name FROM xuesheng GROUP BY name HAVING MIN(score)> 80 AND COUNT(kecheng)>=3

解决办法二:not in

可以用反向思维,先查询出表里面有小于80分的name,然后用not in去除掉

SELECT DISTINCT name FROM xuesheng WHERE name NOT IN    (SELECT DISTINCT name    FROM xuesheng    WHERE score <=80);

删除

学生表xueshengbiao 如下:自动编号 学号 姓名 课程编号 课程名称 分数

autoididnamekcidkcnamescore
12005001张三0001数学69
22005002李四0001数学89
32005001张三0001数学69

删除除了自动编号不同, 其他都相同的学生冗余信息

DELETE t1 FROM xueshengbiao t1, xueshengbiao t2 WHERE t1.id = t2.id and t1.name = t2.name and t1.kcid = t2.kcid and t1.kcname = t2.kcname and t1.score = t2.score and t1.autoid < t2.autoid

如果只是查询出自动编号不同, 其他都相同的学生冗余信息,可以用group by

SELECT * from xueshengbiao t1 WHERE t1.autoid NOT IN    (SELECT MIN(autoid) as autoid FROM xueshengbiao    GROUP BY id, name, kcid, kcname, score)

模糊查询%

表名:student ,用sql查询出“张”姓学生中平均成绩大于75分的学生信息;

namekechengscore
张青语文72
张华英语81
王华数学72
张青物理67
李立化学98
张青化学76
select * from student where name in (select name from student where name like '张%' group by name having avg(score) > 75);

SQL 通配符

在 SQL 中,通配符与 SQL LIKE 操作符一起使用。SQL 通配符用于搜索表中的数据。在 SQL 中,可使用以下通配符:

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]或[!charlist]不在字符列中的任何单一字符

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式

找出姓张和姓李的同学, 用rlike实现匹配多个

-- 找出姓张和姓李的 select * from xuesheng where name in (select name from xuesheng where name rlike '[张李]' group by name having avg(score) > 75);

也可以用 REGEXP,结合正则匹配

select * from xuesheng where name in (select name from xuesheng where name REGEXP '^[张李]' group by name having avg(score) > 75);

《Python3接口自动化第7期》12月8号开学

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Oracle中查询使用正则表达式函数REGEXP
SQL 通配符
MySql模糊查询like通配符使用详细介绍
数据库SQL语句大全——最常用的SQL语句
mysql查询
正则表达式在MySQL5.7和MySQL8.0中的用法以及区别(一)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服