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语句

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



With the continuous development of internationalization, more and more websites and applications need to support multi-language switching functions. As a popular front-end framework, Vue provides a plug-in called i18n that can help us achieve multi-language switching. This article will introduce common techniques for using i18n to implement multi-language switching in Vue. Step 1: Install the i18n plug-in First, we need to install the i18n plug-in using npm or yarn. Enter the following command at the command line: npminst

The out interface refers to the output interface, and the in interface refers to the input interface. The out interface generally represents the audio source line output interface, which is used to connect loads, such as speakers, headphones, etc.; while the in interface generally represents the audio source line input interface, which is used to connect CD players, mobile phones, MP3 players, computers, etc.

Driven by the era of automotive electrification, China's domestic automakers are actively involved in the production of electric supercars. Recently, Haopin, a high-end electric brand owned by GAC Aian, launched an electric supercar called SSR. Previously, BYD's Yangwang U9 also received widespread attention. Recently, a video was circulated on the Internet, purportedly showing Yangwang. U9 test video. In the video, a U9 is speeding on the track. Surprisingly, the vehicle's brake discs flash bright orange, making it look like it is competing in the 24 Hours of Le Mans. Particularly striking is the fact that the brake discs on the front wheels are at least twice as bright as those on the rear wheels. However, it is impossible to determine from the video whether the flash of light is caused by the flames produced by the brake discs during braking or whether it is the lighting effect of the vehicle. exhaust

When some Win7 laptop customers use the numeric keyboard, they encounter the reason why they type u but it becomes 4. what happen? In fact, this is because your laptop has the keyboard integrated into the letter keys. You can fix this problem by simply closing the keyboard. The specific steps are as follows: FN+nunlock key conversion can input English letters normally. This method can also be used if the customer encounters pressing I to change to 5. How to solve the problem that the win7 numeric keyboard u becomes 4:1. For better convenience, the laptop does not have a small keyboard area. Therefore, there are keys that define the function of the numeric keypad. You can use the FN+nunlock key to convert. Some must use shift+numlock to enter English or data. 2.Numpad-

Introduction to Python functions: Overview of functions and usage examples of any function: In Python, any() is a built-in function that is used to determine whether at least one element in an iterable object is true. Returns True if any element in the iterated object is true; otherwise, returns False. Usage syntax: any (iterable) Parameters: iterable: iterable objects, such as lists, tuples, sets, etc. Return value: true if there is at least one element in the iterable object

The OKX trading platform offers a variety of rates, including transaction fees, withdrawal fees and financing fees. For spot transactions, transaction fees vary according to transaction volume and VIP level, and adopt the "market maker model", that is, the market charges a lower handling fee for each transaction. In addition, OKX also offers a variety of futures contracts, including currency standard contracts, USDT contracts and delivery contracts, and the fee structure of each contract is also different.

How to use the File.Exists function in C# to determine whether a file exists. In C# file operations, determining whether a file exists is a basic functional requirement. The File.Exists function is a method in C# used to determine whether a file exists. This article will introduce how to use the File.Exists function in C# to determine whether a file exists and provide specific code examples. Reference the namespace Before you start writing code, you first need to reference the System.IO namespace, which

The article introduces that virtual currency is a digital or virtual currency form that relies on cryptography and trades through peer-to-peer networks, and lists common currencies such as Bitcoin. It is usually available on cryptocurrency exchanges such as Coinbase, and all the advantages and disadvantages of each transaction. It emphasizes that the purchase of virtual currency is high, the price fluctuates greatly, and is prone to fraud and hacking. It reminds you to conduct sufficient research before investing and only invest in funds that can bear losses. The information is for reference only and is not investment advice.
