当前位置: 首页 > article >正文

mysql使用--子查询

1.标量子查询
将一个查询结果集中只含一行,行中只有一列的结果集称为标量结果集。
标量结果集可以作为数值参与到另一个查询中。
如:SELECT * FROM student_score WHERE number = (SELECT number FROM student_info WHERE name = ‘狗哥’);

2.列子查询
将一个查询结果集中包含多行,但行只有一列的结果集称为列子查询。
如:SELECT * FROM student_score WHERE number IN (SELECT number FROM student_info WHERE major = ‘计算机科学与工程’);

3.行子查询
将一个查询结果集中包含一行,但行包含多列的结果集称为行子查询。
如:SELECT * FROM student_score WHERE (number, subject) = (SELECT number, ‘MySQL是怎样运行的’ FROM student_info LIMIT 1);

4.表子查询
将一个查询结果集中包含多行,行中包含多列的结果集称为表子查询。
如:SELECT * FROM student_score WHERE (number, subject) IN (SELECT number, ‘MySQL是怎样运行的’ FROM student_info WHERE major = ‘计算机科学与工程’);

5.EXISTS和NOT EXISTS子查询

运算符示例描述
EXISTSEXISTS (SELECT …)当子查询结果集不是空集时表达式为真
NOT EXISTSNOT EXISTS (SELECT …)当子查询结果集是空集时表达式为真

6.不相关子查询,相关子查询
若子查询可以独立运行并产生结果,则之后再拿结果参与外层查询,这种子查询称为不相关子查询。
如:SELECT * FROM student_score WHERE number = (SELECT number FROM student_info WHERE name = ‘狗哥’);

有时我们需要在子查询的语句中引用外层查询的列,这样的话,这种子查询称为相关子查询。
如:SELECT number, name, id_number, major FROM student_info WHERE EXISTS (SELECT * FROM student_score WHERE student_score.number = student_info.number);
相关子查询的运作规律为:
1.基于FROM得到结果集1
2.对结果集1中每一行执行WHERE过滤,过滤通过时,行加入结果集2。这里的过滤是在行确定下,针对其执行EXISTS语句。
3.对结果集2中每一行执行SELECT语句,得到最终结果集。


http://www.kler.cn/a/135290.html

相关文章:

  • Java:解决因为大小写不规范导致的接收不到数据
  • LabVIEW大数据处理
  • 〔 MySQL 〕数据类型
  • 【FFmpeg】FFmpeg 函数简介 ③ ( 编解码相关函数 | FFmpeg 源码地址 | FFmpeg 解码器相关 结构体 和 函数 )
  • 蓝队知识浅谈(上)
  • 【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
  • 使用量子玻尔兹曼机推进机器学习:新范式
  • 自然语言处理:Transformer和GPT
  • 数智赋能,众创众治|易知微为“浙江省数字监管应用建模技能竞赛”提供技术支撑!
  • git使用记录
  • 大数据架构
  • pipeline + node +jenkins+kubernetes部署yarn前端项目
  • Qt给控件添加图片
  • 牛客--求最小公倍数python
  • 动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)
  • python绘图常见问题及解决方法总结
  • C编译环境和预处理(非常详细,建议收藏)
  • 【智能家居】5、主流程设计以及外设框架编写与测试
  • 截取某个元素前面的数字
  • 算法必刷系列之位运算
  • 深度学习系列53:mmdetection上手
  • 目标检测标注工具AutoDistill
  • RK3588平台开发系列讲解(项目篇)嵌入式AI的学习步骤
  • UML统一建模语言
  • rk3588编译lunch出错
  • 广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力