msyql中子查询IN,EXISTS,ANY,ALL,UNION介绍
在mysql中子查询是将一个查询语句嵌套在另一个查询语句中内层查询语句的查询结果,可以为外层查询语句提供查询条件,mysql中常用的子查询IN,EXISTS,ANY,ALL,UNION,下面我一一介绍介绍。
因为在特定情况下,一个查询语句的条件需要另一个查询语句来获取
带IN关键字的子查询
IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:
WHERE column IN (value1,value2,...)
WHERE column NOT IN (value1,value2,...)
当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。
代码如下 | 复制代码 |
查询 SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)//查询B表中AID的记录 删除 delete from articles where id in (1,2,3); //删除id=1,id=2,id=3的记录 |
此处首先查询出department表中所有d_id字段的信息,并将结果作为条件
接着查询employee表中以d_id为条件的所有字段信息
NOT IN的效果与上面刚好相反
带比较运算符的子查询
代码如下 | 复制代码 |
mysql> SELECT d_id, d_name FROM department -> WHERE d_id!= -> (SELECT d_id FROM employee WHERE age=24); +------+-----------+ | d_id | d_name | +------+-----------+ | 1002 | 生产部 | | 1003 | 销售部 | +------+-----------+ |
2 rows in set (0.00 sec)这里查询出了哪些部门没有年龄为24岁的员工,看起来有点复杂
此外,运算符还有很多,这里不再赘述
带EXISTS关键字的子查询
MySQL EXISTS 和 NOT EXISTS 子查询语法如下:
SELECT ... FROM table WHERE EXISTS (subquery)
该语法可以理解为:将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否得以保留。
代码如下 | 复制代码 |
mysql> SELECT * FROM employee -> WHERE EXISTS -> (SELECT d_name FROM department WHERE d_id=1004); Empty set (0.00 sec) |
此处内层循环并没有查询到满足条件的结果,因此返回false,外层查询不执行
NOT EXISTS刚好与之相反
当然,EXISTS关键字可以与其他的查询条件一起使用
条件表达式与EXISTS关键字之间用AND或者OR来连接
代码如下 | 复制代码 |
|
提示
•EXISTS (subquery) 只返回 TRUE 或 FALSE,因此子查询中的 SELECT * 也可以是 SELECT 1 或其他,官方说法是实际执行时会忽略 SELECT 清单,因此没有区别。
•EXISTS 子查询的实际执行过程可能经过了优化而不是我们理解上的逐条对比,如果担忧效率问题,可进行实际检验以确定是否有效率问题。
•EXISTS 子查询往往也可以用条件表达式、其他子查询或者 JOIN 来替代,何种最优需要具体问题具体分析
带ANY关键字的子查询
ANY关键字表示满足其中任一条件
代码如下 | 复制代码 |
mysql> SELECT * FROM employee 4 rows in set (0.00 sec) |
带ALL关键字的子查询
ALL关键字表示满足其中所有条件
代码如下 | 复制代码 |
mysql> SELECT * FROM employee -> WHERE d_id>=ALL -> (SELECT d_id FROM department); |
1 row in set (0.00 sec)暂时不明白这两条语句是什么意思,到时候再补上
UNION合并查询结果
MySQL UNION 用于把来自多个 SELECT 语句的结果组合到一个结果集合中。语法为:
SELECT column,... FROM table1
UNION [ALL]
SELECT column,... FROM table2
...
在多个 SELECT 语句中,对应的列应该具有相同的字段属性,且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。
UNION 与 UNION ALL 的区别
当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION。
代码如下 | 复制代码 |
mysql> SELECT d_id FROM employee -> UNION -> SELECT d_id FROM department; +------+ | d_id | +------+ | 1001 | | 1002 | | 1004 | | 1003 | +------+ |
4 rows in set (0.00 sec)合并比较好理解,也就是将多个查询的结果合并在一起,然后去除其中的重复记录
如果想保存重复记录可以使用UNION ALL语句

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

随着国际化的不断发展,越来越多的网站和应用程序需要支持多语言切换功能。Vue作为一款流行的前端框架,提供了一种名为i18n的插件,可以帮助我们实现多语言切换。本文将介绍Vue中使用i18n实现多语言切换的常见技巧。第一步:安装i18n插件首先,我们需要使用npm或yarn安装i18n插件。在命令行中输入以下命令:npminst

out接口指的是输出接口,in接口指的是输入接口。out接口一般代表着音源线路输出接口,用来接负载,例音箱、耳机等;而in接口一般代表着音源线路输入接口,用来接CD机、手机、MP3、电脑等。

在汽车电气化时代的推动下,中国国产汽车制造商积极参与了电动超跑的生产。最近,广汽埃安旗下的高端电动品牌昊铂推出了一款名为SSR的电动超跑,而此前,比亚迪的仰望U9也受到了广泛关注近日,有一段视频在网络上流传,据称是仰望U9的测试视频。视频中,一辆仰望U9在赛道上飞速行驶,令人惊讶的是,车辆的制动盘闪烁着明亮的橙色光芒,看起来就像是在进行勒芒24小时耐力赛一样。尤其引人瞩目的是前轮制动盘的亮度至少是后轮的两倍。然而,从视频中无法确定这一闪烁光亮是刹车盘在制动时产生的火光,还是车辆配备的灯光效果。尽

当一些Win7笔记本电脑客户使用数字键盘时,他们会遇到打字u但变为4的原因。发生什么事?事实上,这是因为你的笔记本电脑将键盘集成到字母键中。你只需关闭键盘就可以解决这个问题。具体步骤如下:FN+nunlock键转换可以正常输入英语字母。如果客户遇到按I变为5,也可以使用此方法。如何解决win7数字键盘u变成4:1.为了更好的方便,笔记本电脑没有小键盘区域。因此,有一些键可以界定数字键盘的功能。可以使用FN+nunlock键进行转换。有些必须用shift+numlock输入英语或数据。2.小键盘-

Python函数介绍:any函数的功能和使用示例概述:在Python中,any()是一个内置函数,它用于判断一个可迭代对象中的元素是否有至少有一个为真。如果迭代对象中的任何一个元素为真,则返回True;否则,返回False。使用语法:any(iterable)参数:iterable:可迭代对象,如列表、元组、集合等。返回值:如果可迭代对象中有至少一个元素为真

OKX 交易平台提供了各种类型的费率,包括交易费用、提款费用和融资费用。对于现货交易,交易费用根据交易量和 VIP 等级而有所不同,采取“做市商模式”,即市场每笔交易收取较低的手续费。此外,OKX 还提供了多种类型的期货合约,包括币本位合约、USDT 合约和交割合约,每种合约的费用结构也有所不同。

如何使用C#中的File.Exists函数判断文件是否存在在C#的文件操作中,判断文件是否存在是一项基本的功能需求。File.Exists函数是C#中的一个用于判断文件是否存在的方法。本文将介绍如何使用C#中的File.Exists函数来判断文件是否存在,并提供具体的代码示例。引用命名空间在开始编写代码之前,首先需要引用System.IO命名空间,该命名空间

文章介绍虚拟货币是依赖密码学、通过点对点网络交易的数字或虚拟货币形式,列举比特币等常见币种。说明通常可在加密货币交易所如 Coinbase 等购买,各交易所有优劣。着重强调购买虚拟货币风险高,价格波动大且易遭诈骗、黑客攻击,提醒投资前充分研究,只投能承受损失的资金,信息仅供参考,非投资建议。
