首页 > 数据库 >MySQL学习日志十,子查询和嵌套查询

MySQL学习日志十,子查询和嵌套查询

时间:2023-05-14 18:00:50浏览次数:41  
标签:studentno 查询 嵌套 studentresult subjectno MySQL WHERE SELECT

子查询

where(这个值是计算出来的)
先执行where里面的语句,之后执行外面的语句

本质:where里面嵌套一个子查询语句

查询参加高等数学考试的学生(学号,姓名。科目编号,成绩),降序排列

-- 方式一:连接查询

SELECT s.studentno,studentname,r.subjectno,studentresult
FROM student s
INNER JOIN result r
on s.studentno=r.studentno
INNER JOIN `subject`sub
on sub.subjectno=r.subjectno
WHERE subjectname='高等数学-1'
order by studentresult DESC

-- 方式二:子查询

SELECT s.studentno,studentname,r.subjectno,studentresult
FROM student s
INNER JOIN result r
on s.studentno=r.studentno
WHERE subjectno=(
SELECT subjectno from `subject` WHERE subjectname='高等数学-1'
)
order by studentresult DESC

-- 查询分数不小于80的学生的学号,姓名

SELECT s.studentno,studentname
from student s
INNER JOIN result r
on s.studentno=r.studentno
WHERE studentresult>=80

-- 查询参加高等数学-1分数不小于80的学生的学号,姓名

SELECT s.studentno,studentname
from student s
INNER JOIN result r
on s.studentno=r.studentno
WHERE studentresult>=80
 and 
subjectno=(
SELECT subjectno from `subject` WHERE subjectname='高等数学-1'
)

-- 查询参加高等数学-1分数不小于80的学生的学号,姓名
-- 嵌套查询(由里及外)

SELECT studentno,studentname
from student
WHERE studentno in(
SELECT studentno FROM result WHERE studentresult>=80
 and 
subjectno=(
SELECT subjectno from `subject` WHERE subjectname='高等数学-1'
))

-- 查询参加高等数学-1,前5名同学的信息(学号,姓名,成绩)
-- 联表查询

SELECT s.studentno,studentname,studentresult
from student s
INNER JOIN result r
on s.studentno=r.studentno
INNER JOIN `subject` sub
ON r.subjectno=sub.subjectno
WHERE subjectname='高等数学-1'
ORDER BY studentresult DESC
LIMIT 0,5

-- 查询参加高等数学-1,前5名同学的信息(学号,姓名,成绩)
-- 子查询

SELECT s.studentno,studentname,studentresult
from student s
INNER JOIN result r
on s.studentno=r.studentno
WHERE subjectno= (
SELECT subjectno from `subject` WHERE subjectname='高等数学-1'
)
ORDER BY studentresult DESC
LIMIT 0,5

标签:studentno,查询,嵌套,studentresult,subjectno,MySQL,WHERE,SELECT
From: https://www.cnblogs.com/yzx-sir/p/17399717.html

相关文章

  • elasticsearch脚本查询
    脚本查询概念Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能,ES支持多种脚本语言,如painless,其语法类似于Java,也有注释、关键字、类型、变量、函数等,其就要相对于其他脚本高出几倍的性能,并且安全可靠,可以用于内联和存储脚本。支持的......
  • 03-面试必会-Mysql篇
    1.Mysql查询语句的书写顺序Select[distinct]<字段名称>from表1[<join类型>join表2on<join条件>]where<where条件>groupby<字段>having<having条件>orderby<排序字段>limit<起始偏移量,行数>2.Mysql查询语句的执行顺序(8)Select(9)di......
  • mysql8之json/数组的增删改查
    前言,类型必须是json,虽然text也可以,但是很多操作没法使用,比如查询,当然了,这种类型还可以存储数组类似varchar,设置JSON主要将字段的type是json,不能设置长度,可以是NULL但不能有默认值。创建jsonjson_array创建json数组json_object创建json对象查询jsonjson_contain......
  • MySQL8JSON数组函数之json_array_append、json_array_insert
    json_array_append、json_array_insert顾名思义就是向数组中追加和插入值,因为没有找到合适的例子,所以就使用官方的例子进行说明1、json_array_append向指定的位置后追加值,查询和修改的函数如下所示:updatetest_jsonsettest_json_array=json_array_append(test_json_array,......
  • mysql8 json 索引总结
    表结构如下所示:CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo......
  • MySQL8之JSON_OVERLAPS、JSON_CONTAINS
    表结构如下所示:CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo......
  • MySQL8版本之json_keys、json_object、json_overlaps、json_pretty
    CREATETABLE`test_json`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(32)NOTNULL,`age`intNOTNULL,`test_json_array`jsonNOTNULL,`test_json_object`jsonNOTNULL,`test_json_array_object`jsonNOTNULL,`custinfo`jsonDEFAU......
  • MySQL学习日志九,分页和排序
    一、排序查询orderby排序升序ASC降序DESC1.升序排序--查询参加考试的同学,包含的信息包括学号,姓名,科目名,分数(以分数升序展示)SELECTs.studentno,studentname,subjectname,studentresultFROMstudentsINNERJOINresultrONs.studentno=r.studentnoinner......
  • Java:SpringBoot整合MyBatis-Plus实现MySQL数据库的增删改查
    MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。文档https://baomidou.com/目录一、引入坐标二、配置三、CURD测试四、API数据接口一、引入坐标<dependency><groupId>com.baomidou</groupId><artifactId>m......
  • MySQL text类型出现报错 Data truncation: Data too long for column...
    MySQL5.7数据库字段类型为:text 代码中限制了长度为50000 结果出现异常 结论:MySQL5以上版本中varchar类型的长度限制是以字符数为单位的,比如:“你好”是2个字符text类型则是以字节数为单位的,这里我们的数据库字段编码为utf8mb4,每个中文字符占3个字节,所以“你好”是......