mysql中子查询是什么_mysql子查询是什么
MySql的子查询是多表查询的一个重要组成部分,常常和连接查询一起使用,是多表查询的基础。下面本篇文章就来带大家了解一下子查询,希望对你们有所帮助。
什么是子查询?
子查询,又叫内部查询。当一个查询是另一个查询的条件时,称之为子查询。子查询可以使用几个简单命令构造功能强大的复合命令。子查询最常用于SELECT-SQL命令的WHERE子句中。
子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT…INTO 语句、INSERT…INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。
二、子查询分类
子查询分为如下几类:
1、 标量子查询:返回单一值的标量,最简单的形式。
2、 列子查询:返回的结果集是 N 行一列。
3、行子查询:返回的结果集是一行 N 列。
4、 表子查询:返回的结果集是 N 行 N 列。
可以使用的操作符:= > < >= <= <> ANY IN SOME ALL EXISTS
一个子查询会返回一个标量(就一个值)、一个行、一个列或一个表,这些子查询称之为标量、行、列和表子查询。
如果子查询返回一个标量值(就一个值),那么外部查询就可以使用:=、>、=、<=和<>符号进行比较判断;如果子查询返回的不是一个标量值,而外部查询使用了比较符和子查询的结果进行了比较,那么就会抛出异常。
1、 标量子查询:
是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。 可以使用 = > < >= <= <> 这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧
示例:SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)
SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)
2、MySQL 列子查询:
指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回。
可以使用 = > < >= <= <>这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧
可以使用 IN、ANY、SOME 和 ALL 操作符,不能直接使用 = > < >= <= <> 这些比较标量结果的操作符。
示例:SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)
NOT IN 是 <> ALL 的别名,二者相同。
特殊情况:
如果 table2 为空表,则 ALL 后的结果为 TRUE;
如果子查询返回如 (0,NULL,1) 这种尽管 s1 比返回结果都大,但有空行的结果,则 ALL 后的结果为 UNKNOWN 。
注意:对于 table2 空表的情况,下面的语句均返回 NULL:SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)
3、MySQL 行子查询:
指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。
例子:SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)
//注:(1,2) 等同于 row(1,2)
SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)
4、MySQL 表子查询:
指子查询返回的结果集是 N 行 N 列的一个表数据。
例子:SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)
mysql中子查询是什么_mysql子查询是什么相关推荐
- mysql子查询的语法_MySQL子查询Subquery语法介绍
MySQL子查询Subquery语法介绍 发布时间:2020-05-19 15:48:10 来源:51CTO 阅读:187 作者:三月 下面讲讲关于MySQL子查询Subquery,文字的奥妙在于贴近 ...
- mysql用in报错_Mysql子查询IN中使用LIMIT
学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...
- mysql子查询过多慢_MySQL子查询慢现象的解决
当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的& ...
- mysql查找并删除记录_mysql 子查询删除记录
mysql 子查询删除记录 mysql 可以通过子查询得到要删除的记录条件,然后通过子查询得结果匹配要删除的记录.但是 mysql 不能直接删除子查询表中的数据,必须通过一个临时表来解决.例如: de ...
- mysql子查询复杂操作_MySQL 子查询操作
子查询 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句 为什么会有子查询这种用法 数据库有没有记忆力 但查询结果需要的数据,本表已 ...
- mysql子查询是什么_mysql子查询
1. 什么是子查询 当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询) 什么时候用? 当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时, 例如:给出一个部门名称 ...
- mysql子查询分为几种方法_MYSQL子查询的5种形式
mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当麻烦,mysql子查询的几种常 见写法: 1.select * from xxx where ...
- mysql 分号子查询_MySQL子查询详解
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...
- mysql的where子查询_mysql子查询
原标题:mysql子查询 一.mysql子查询基本知识 子查询就是在原有的查询语句中,嵌入新的查询,来得到我们想要的结果集. 子查询一般分为:where型子查询.from型子查询和exists型子查询 ...
最新文章
- Python使用openCV把原始彩色图像转化为灰度图、使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本)、基于自适应阈值预处理(adaptive thresholding)方法
- 树莓派python编程自学-两个简易的树莓派初学者Python程序
- WINCE创建快捷方式
- php本身免费是啥意思,PHP本身是否支持连接和析取?
- ORACLE REPLACE函数
- SQL Server DATEDIFF() 函数计算时间差
- virtualenv在windows10下面使用的注意事项
- 37)智能指针(就是自动delete空间)
- VMWare 虚拟机安装及新建虚拟机
- odoo13 订单模板设置_免费开源ERP Odoo 13系统E-mail邮件功能设置操作指南
- oracle解锁用户
- python卸载_Python包管理工具pip - amanlikethis
- jave double相加结果误差+尾巴
- 【证明】—— 矩阵秩的相关证明
- seetaface6之画出人脸位置
- Java文件操作——简单文件搜索
- 解释程序与解释程序的缺点,图解——解释程序与编译程序的区别
- c语言两个字母如何比较,c如何比较两个字符 C语言中怎么判断两个字符相同
- 报错 The type类名 is already defined
- 2015网易游戏校园招聘笔试题 研发岗
热门文章
- Shiro权限管理详解
- Promises讲解
- html鼠标悬停点击,jQuery实现鼠标点击悬浮特效
- Win7 D盘没了:DiskGen 指派驱动器号时出现错误(00000002)系统找不到指定的文件
- 图的基础知识及深度优先、广度优先算法
- php md5 64,php加密函数md5,crypt,base64_encode的用法介绍
- 如何写好一份“漏洞报告”
- mysql2008错误2_解决SQL Server 连接服务器 错误2
- OPPO手机不再是全部自主设计制造,部分来自于ODM
- Secure CRT8.1.3 64位安装及注册激活