【数据库】|子查询

news2024/9/19 9:53:12

子查询

什么叫子查询?如何实现子查询?

定义:什么叫子查询,也就是先执行子查询,后执行父查询

❓✅面试题:如何实现替换,执行顺序?

1、使用子查询,因为子查询会先执行子句,在执行父句,效率非常低

select * from student where sid = (select max(sid) from student)
  • 查询id最大的一个学生(子查询)
    select max(sid) from student ,select * from student where sid = 9如何将这两行合并为一行sql进行执行呢?

    select * from student where sid = (select max(sid) from student) 
    
  • 查询每个班级下面id最大的学生?

    select * from student 
    left join class on student.classid = class.classid
    where sid in(
    select max(sid) from student group by classid
    )
    
    
  • 查询张三老师教了哪些学生?

    select * from student where sid in(
    select sid from sc where cid = (
    	select cid from course where tid =(
    		(select tid from teacher where tname = '张三')
    )
    )
    )
    
  • ✅面试题目:请查询没有学习过张三老师的课的学生?

    • 思想
    1. 找出上了张三老师课程的学生❗
    2. 然后使用非❗
    3. 使用not in
    select * from student where sid not in(
    select sid from sc where cid = (
    	select cid from course where tid =(
    		(select tid from teacher where tname = '张三')
    )
    )
    )
    

from子查询

定义: 查询结果作为一张表进行使用

  • 查询大于5 人的班级的名称和人数

    • 使用group by 进行解决
    select * from class
    left join student on class.classid = student.classid
    GROUP BY class.classid having count(*) > 5
    
    • 使用子查询进行
    -- 使用子查询
    -- 班级和学生进行了连接,进行了查询
    select classname , 人数 from class left join
    -- 查询每个班级有多少个人,然后在将班级表的classid和学生表的classid进行连接
    	(select classid,count(*) 人数
    	from student group by classid
    	)t1
    on class.classid = t1.classid
    where 人数 > 5
    

exist子查询

👀:定义:exist 子查询 子句有结果,父句执行,子句没有结果,父句不执行

select * from teacher
where exists (select * from student where classid = 10)

any some or 子查询

  • 查出一班成绩比二班最低成绩高的学生
select DISTINCT student.* from sc left join student on sc.Sid = student.Sid
where student.classid = 1 and score > some (select min(score) from sc left join student on sc.Sid = student.Sid
where student.classid = 2 )
  • 查询一般比二班最高的成绩还要高的学生,all满足所有的条件是and
select DISTINCT student.* from sc
left join student on sc.Sid = student.Sid
where student.classid = 1 and score > all (
select max(score) from sc
left join student on sc.Sid = student.Sid
where student.classid = 2 )

流程控制函数

1️⃣if

格式:

  1. if(value1, value2, value3)
  2. vaue1:条件成立
  3. value2:条件成立,显示数据
  4. value3:条件不成立 ,显示数据
  • 结果集的控制如果为1,则显示女,否则显示男
select * from teacher
select tid, tname, if(tsex=1,'女','男')tsex, Tbirthday,Taddress from teacher

2️⃣idnull (expres1, expre2)

格式:

  1. expre1 :字段
  2. expre2 :当字段值为null时,,默认值
  • 如果有生日,则显示原来的生日,如果没有生日,则显示默认值
select * from student
select sid, IFNULL(birthday,'我是石猴子'), sname from student

👍面试⭐️ case when then end

  • 当有0 时候显示男,当有1 的时候显示女
select tid, tname,
case tsex 
	when 0 then '男'
	when 1 then '女'
end tsex, tbirthday from teacher
  • 如果出现没有指定的性别,直接是一个null

    select tid, tname,
    case tsex 
    	when 0 then '男'
    	when 1 then '女'
    	else '保密'
    end tsex, tbirthday from teacher  
    
  • 第二种写法

    select tid,tname, 
    case
     when tsex > 1 then '男'
     when tsex = 1 then '女'
     when Tsex < 1 then '位置'
     END
    , tbirthday
    from teacher
    
  • 查询学生的所有成绩进行排名输出

select 
case 
when score >= 90 then 'A'
when score >= 80 then 'B'
when score > 70 then 'C'
when score > 60 then 'D'
when score < 60 then '不及格'
else '无成绩'
end
成绩 from sc
  • – 统计各个分数段的人数 ,分数段 人数
select 
case 
when score >= 90 then '100-90'
when score >= 80 then 'B'
when score > 70 then 'C'
when score > 60 then 'D'
when score < 60 then '不及格'
else '无成绩'
end
分数段 from sc

✅面试题目:给你一个页面让你写另一个页面

image-20240722190149631

给出的页面
-- 面试题目
select '100-90', score , count(score) 人数 from sc where score > 90 and score <100
union 
select '90-70', score , count(score) 人数 from sc where score > 70 and score <90
union 
select '70-60', score , count(score) 人数 from sc where score > 60 and score <70
union
select '不及格', score , count(score) 人数 from sc where score <60

如何实现到这个步骤?

image-20240722190310956

select '人数' 分数,
	count(case when score <= 100 and score >=90 then score end)'100-90',
	count(case when score <= 90 and score >=90 then score end)'90-70',
	count(case when score <= 70 and score >=90 then score end)'70-60',
	count(case when score <= 60 and score >=90 then score end)'不及格'
 from sc

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型LLM权重4bit向量量化(Vector Quantization)/查找表量化基本原理

参考 https://apple.github.io/coremltools/docs-guides/source/opt-palettization-overview.html https://apple.github.io/coremltools/docs-guides/source/opt-palettization-algos.html Apple Intelligence Foundation Language Models 苹果向量量化&#xff1a; DKM:…

深度学习基础--卷积的变种

随着卷积同经网络在各种问题中的广泛应用&#xff0c;卷积层也逐渐衍生出了许多变种&#xff0c;比较有代表性的有&#xff1a; 分组卷积( Group Convolution )、转置卷积 (Transposed Convolution) 、空洞卷积( Dilated/Atrous Convolution )、可变形卷积( Deformable Convolu…

协程的原理与实现:GMP源码走读

在计算机科学领域&#xff0c;尤其是在现代软件开发中&#xff0c;高并发处理能力是衡量技术架构性能的关键指标之一。Go语言&#xff0c;以其简洁的语法和内置的协程支持&#xff0c;为开发者提供了一套高效且易于使用的并发编程模型。本文深入剖析了Go语言协程的原理与其实现…

erlang学习:用ETS和DETS存储数据3,保存元组到磁盘

学习内容 ETS表把元组保存在内存里&#xff0c;而DETS提供了把Erlang元组保存到磁盘上的方法。DETS的最大文件大小是2GB。DETS文件必须先打开才能使用&#xff0c;用完后还应该正确关闭。如果没有正确关闭&#xff0c;它们就会在下次打开时自动进行修复。因为修复可能会花很长…

软件测试学习笔记丨Pytest的使用

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22158 1. 简介 pytest是一个成熟的全功能python测试框架测试用例的skip和xfail&#xff0c;自动失败重试等处理能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/ap…

路由器的固定ip地址是啥意思?固定ip地址有什么好处

‌在当今数字化时代&#xff0c;‌路由器作为连接互联网的重要设备&#xff0c;‌扮演着举足轻重的角色。‌其中&#xff0c;‌路由器的固定IP地址是一个常被提及但可能让人困惑的概念。‌下面跟着虎观代理小二一起将深入探讨路由器的固定IP地址的含义&#xff0c;‌揭示其背后…

元学习之如何学习

首先第一个步骤&#xff08;如图1所示&#xff09;是我们的学习算法里要有一些要被学的东西&#xff0c;就像在 机器学习里面神经元的权重和偏置是要被学出来的一样。在元学习里面&#xff0c;我们通常会考虑要 让机器自己学习网络的架构&#xff0c;让机器自己学习初始化的参数…

echarts 水平柱图 科技风

var category [{ name: "管控", value: 2500 }, { name: "集中式", value: 8000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 }, { name: "纳管", value: 3000 } ]; // 类别 var total 10000; // 数据…

RockyLinux8.9上yum安装redis6

我百思不得其解的一个问题 我想在RockyLinux8.9上安装redis6&#xff0c;通过yum list | grep redis看到的redis版本只有redis5 appstream-official仓库是我新加的&#xff0c;这里先不管 于是我通过浏览器访问appstream仓库https://dl.rockylinux.org/vault/rocky/8.9/AppSt…

MQTT broker搭建并用SSL加密

系统为centos&#xff0c;基于emqx搭建broker&#xff0c;流程参考官方。 安装好后&#xff0c;用ssl加密。 进入/etc/emqx/certs,可以看到 分别为 cacert.pem CA 文件cert.pem 服务端证书key.pem 服务端keyclient-cert.pem 客户端证书client-key.pem 客户端key 编辑emqx配…

ANSA联合abaqus的转动副创建方式

下面链接详细介绍了ANSA联合Abaqus创建转动副的过程&#xff1a; https://www.bilibili.com/video/BV1cb421b7z9/?spm_id_from333.880.my_history.page.clickhttps://www.bilibili.com/video/BV1cb421b7z9/?spm_id_from333.880.my_history.page.click

复盘高质量Vision Pro沉浸式视频的制作流程与工具

在探索虚拟现实(VR)和增强现实(AR)技术的过程中,高质量的沉浸式体验是至关重要的。最近,国外开发者Dreamwieber在其作品中展示了如何使用一系列工具和技术,创造出令人震撼的Vision Pro沉浸式视频。本文将详细复盘Dreamwieber的工作流,希望能为从事相关领域的开发者们提…

综合评价 | 基于熵权-变异系数-博弈组合法的综合评价模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 根据信息熵的定义&#xff0c;对于某项指标&#xff0c;可以用熵值来判断某个指标的离散程度&#xff0c;其信息熵值越小&#xff0c;指标的离散程度越大&#xff0c; 该指标对综合评价的影响&#xff08;即权重&…

【JAVA入门】Day34 - Stream流

【JAVA入门】Day34 - Stream流 文章目录 【JAVA入门】Day34 - Stream流一、Stream 流的作用和使用步骤1.Stream流的创建&#xff0c;数据的添加2. Stream流的中间方法3. Stream流的终结方法 Stream 流有什么作用&#xff1f;我们看一个例子&#xff1a; 【练习】需求&#xff…

SQL的高级查询练习知识点下(day26)

1 学习目标 重点掌握分组查询的语法 重点掌握分页查询的语法 2 分页查询 2.1 语法 SELECT 字段|表达式,... FROM 表 [WHERE 条件] [GROUP BY 分组字段] [HAVING 条件] [ORDER BY 排序的字段] LIMIT [起始的条目索引,]条目数; 2.2 特点 起始条目索引从0开始 limit子句放在…

ARM32开发——GD32F4 DMA功能查询

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 DMA0DMA1 DMA0 DMA1

蔬菜识别数据集 蔬菜数据集 用于训练,有十种蔬菜,如图已经标注好的版本

数据集概述 该数据集包含十种常见的蔬菜&#xff1a;胡萝卜、包菜、水果辣椒、青瓜、南瓜、土豆、花菜和西红柿。数据集已经进行了精细的标注&#xff0c;适用于深度学习模型的训练&#xff0c;尤其是用于物体检测和分类任务。 数据集特点 种类多样&#xff1a;涵盖了八种蔬菜…

Github 2024-09-07Rust开源项目日报Top10

根据Github Trendings的统计,今日(2024-09-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Go项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT …

Vue-Pinia状态管理案列Demo

上一篇文章已经介绍了pinia的基本使用&#xff0c;现在做一个小的案列来巩固。 数据绑定修改pinia中的状态。 在页面刷新的时候会显示pinia中的数据 import { createApp } from vue // import ./style.css import App from ./App.vueimport { createPinia } from pinia cons…

心觉:接纳父母,就是接纳自己---创富第一步

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松搞定人生挑战&#xff0c;实现心中梦想&#xff01; 挑战日更写作162/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 很多人抱怨父母&…