高级查询(子查询)

可以使用的范围:
  • 子查询是一个嵌套在SELECT、INSERTUPDATEDELETE语句或其他子查询中的查询。
  • 任何允许使用表达式的地方都可以使用子查询。
  • 子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择

子查询的特点和优势

可以成为SQL 语句的多个部分:

  1. 子查询作为查询条件使用。
  2. 子查询作为临时表使用。
  3. 子查询作为列使用。
降低 SQL 的语句的复杂度,提高 SQL 语句的可读性。

1、应用于单行查询条件(=><等的判断)
注意:子查询结果只能产生唯一的值
-- 某位同学的年级信息
select * from Student;
select * from Grade;
-- 分析
select * from Grade where GradeId=2; -- 显示信息
select * from Student where StudentNo='S1101001';-- 过滤条件
-- 示例语句
select * from Grade where GradeId=(select GradeId from Student where
StudentNo='S1101001');
-- 某科目的年级信息
select * from grade where GradeId = (select GradeId from Subject where
SubjectId=2);

2、应用于多行查询条件(innot in等的判断)

-- mysql还有all any等关键字进行子查询
-- 考试成绩80以上学生的信息
select * from Result;
select * from Student;
select * from Student;-- 显示信息
select StudentNo from Result where StudentResult>80;-- 过滤数据
select * from Student where StudentNo in (select StudentNo from Result where
StudentResult>80);
3、临时表使用
-- 1、当临时表普通查询使用
-- 上面的示例 查询学生信息和年级名字
select b.GradeName 年级名称,a.* from Student a left join Grade b
on a.GradeId = b.GradeId;
-- 数据库都把查询结果返回成一个表格结果集显示出来,临时以表的形式存储在内存

-- 把子查询当普通表查询
-- mysql只能用结果表中显示的列名为列名 有别名必须用别名
select s.StudentNo,s.Email,s.StudentName,s.年级名称 from (select b.GradeName
年级名称,a.* from Student a left join Grade b on a.GradeId = b.GradeId) s;
-- 2、当临时表联合查询使用
-- 上面的三表联结
select a.*,b.StudentName 名字,c.SubjectName 科目 from
Result a,Student b,Subject c;
where a.StudentNo = b.StudentNo and a.SubjectId =c.SubjectId;
-- 把子查询当表联接查询
-- 当临时表
select a.*,b.StudentName 名字 from Result a,Student b
where a.StudentNo = b.StudentNo;
-- 再联接查询
select z.*,s.SubjectName from `subject` s ,(select a.*,b.StudentName 名字
from
Result a,Student b where a.StudentNo = b.StudentNo) z where s.SubjectId =
z.SubjectId;
select z.*,s.SubjectName from `subject` s inner join (select
a.*,b.StudentName 名字 from
Result a,Student b where a.StudentNo = b.StudentNo) z on s.SubjectId =
z.SubjectId;

感谢大家的阅读,如有不对的地方,可以私信我,感谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697814.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数智转型 聚创未来 | 2024达索系统企业转型智造论坛汽车零部件专场

报名链接&#xff1a; 数智转型 聚创未来https://3ds.tbh5.com/3ds/ureg.aspx?fwbestway

【VUE.js】前端框架——未完成

基于脚手架创建前端工程 环境 当安装node.js时&#xff0c;它本身就携带有npm命令。&#xff08;-v 查版本号&#xff09;安装VUE CLI npm i vue/cli -g&#xff08;全局&#xff09; 创建 vue create 【project name】 镜像源解决方案 输入创建命令后&#xff0c;提示检查更…

[笔试强训day08]

文章目录 HJ108 求最小公倍数NC95 数组中的最长连续子序列DP39 字母收集 HJ108 求最小公倍数 HJ108 求最小公倍数 #include<iostream>using namespace std;int a,b;int gcd(int a,int b) {if(b0) return a;return gcd(b,a%b); } int main() {cin>>a>>b;int …

Linux---vim编辑器(续写)

5. vim正常模式命令集 插入模式 按「i」切换进入插入模式「insert mode」&#xff0c; 按“i”进入插入模式后是从光标当前位置开始输入文件&#xff1b; 按「a」进入插入模式后&#xff0c;是从目前光标所在位置的下一个位置开始输入文字&#xff1b; 按「o」进入插入模式…

天诚AIoT无线联网智能门锁即将亮相成都安博会、永康门博会

5月上旬&#xff0c;对于江苏新巢天诚智能技术有限公司&#xff08;以下简称“天诚”&#xff09;而言&#xff0c;依旧忙得如火如荼。随着各地人才公寓、公租房、智慧校园类智慧通行与租住新项目的实施、落地与服务&#xff0c;天诚也不忘初心&#xff0c;携全新升级的AIoT全场…

初识FlaskMySQL实现前后端通信 全栈开发之路——后端篇(1)

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

云原生基础设施和操作系统分论坛 03-在Kubernetes上运行Apache Spark进行大规模数据处理的实践【数据分析】

https://spark.apache.org/视频观看&#xff1a;https://www.bilibili.com/video/BV17J4m1n7Gv/?spm_id_from333.999.0.0 简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop…

小红薯视频作品一键克隆,解放双手自动搬运【永久脚本+使用教程】

软件介绍&#xff1a; 小红薯作品搬运神器&#xff0c;软件只需要复制对方的作品链接即可一键克隆搬运到自己的小红书上&#xff0c;再也不用手动去复制粘贴了&#xff0c;批量起号搬运必备神器 设备需求&#xff1a; 电脑 链接&#xff1a;https://pan.baidu.com/s/11MzBqER…

Ubuntu虚拟机上推荐一款免费好用的git版本管理工具

工具叫: gitg 软件界面如下&#xff1a; FR:徐海涛(hunkxu)

LLM应用-文档解析 AI大模型总结分析文档

1&#xff09;https://notegpt.io/pdf-summary 支持总结&#xff0c;思维导图、对话 2&#xff09;chatdoc https://chatdoc.com/ 3&#xff09;chatpdf https://www.chatpdf.com/ https://www.chatpdfs.cn/ 4&#xff09;kimi https://kimi.moonshot.cn/

【DevOps】深入解析 Docker日志分析和服务故障排除技巧

在今天的云计算和微服务架构中&#xff0c;Docker凭借其轻量级和高效的容器化技术&#xff0c;已成为软件部署不可或缺的一部分。然而&#xff0c;随着应用复杂性的增加&#xff0c;有效的日志管理和故障排除能力成为了开发者和运维人员必须掌握的核心技能。本文将带你深入探索…