데이터 베이스 MySQL 튜토리얼 msyql中子查询IN,EXISTS,ANY,ALL,UNION介绍

msyql中子查询IN,EXISTS,ANY,ALL,UNION介绍

Jun 07, 2016 pm 05:52 PM

在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的记录
SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B) 意思和上面相反

删除

delete from articles where id in (1,2,3);  //删除id=1,id=2,id=3的记录
delete from articles where id not in (1);//删除id!=1的记录

此处首先查询出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来连接

 代码如下 复制代码


mysql> SELECT * FROM employee
    -> WHERE age>24 AND EXISTS
    -> (SELECT d_name FROM department WHERE d_id=1003);


提示
•EXISTS (subquery) 只返回 TRUE 或 FALSE,因此子查询中的 SELECT * 也可以是 SELECT 1 或其他,官方说法是实际执行时会忽略 SELECT 清单,因此没有区别。
•EXISTS 子查询的实际执行过程可能经过了优化而不是我们理解上的逐条对比,如果担忧效率问题,可进行实际检验以确定是否有效率问题。
•EXISTS 子查询往往也可以用条件表达式、其他子查询或者 JOIN 来替代,何种最优需要具体问题具体分析


带ANY关键字的子查询

ANY关键字表示满足其中任一条件

 

 代码如下 复制代码

mysql> SELECT * FROM employee
    -> WHERE d_id!=ANY
    -> (SELECT d_id FROM department);

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

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 i18n을 사용하여 Vue에서 다국어 전환을 구현하는 팁 Jun 25, 2023 am 09:33 AM

국제화가 지속적으로 발전함에 따라 점점 더 많은 웹사이트와 애플리케이션이 다중 언어 전환 기능을 지원해야 합니다. 널리 사용되는 프런트엔드 프레임워크인 Vue는 다중 언어 전환을 달성하는 데 도움이 되는 i18n이라는 플러그인을 제공합니다. 이 기사에서는 i18n을 사용하여 Vue에서 다중 언어 전환을 구현하는 일반적인 기술을 소개합니다. 1단계: i18n 플러그인 설치 먼저 npm 또는 Yarn을 사용하여 i18n 플러그인을 설치해야 합니다. 명령줄에 다음 명령을 입력합니다: npminst

out 및 in 인터페이스는 무엇을 의미하나요? out 및 in 인터페이스는 무엇을 의미하나요? Sep 28, 2021 pm 04:39 PM

out 인터페이스는 출력 인터페이스를 나타내고 in 인터페이스는 입력 인터페이스를 나타냅니다. 아웃 인터페이스는 일반적으로 스피커, 헤드폰 등과 같은 부하를 연결하는 데 사용되는 오디오 소스 라인 출력 인터페이스를 나타내고, 인 인터페이스는 일반적으로 CD 플레이어, 모바일을 연결하는 데 사용되는 오디오 소스 라인 입력 인터페이스를 나타냅니다. 휴대폰, MP3 플레이어, 컴퓨터 등

U9를 바라보며: 중국이 가장 좋아하는 새로운 전기 슈퍼카 U9를 바라보며: 중국이 가장 좋아하는 새로운 전기 슈퍼카 Oct 13, 2023 pm 03:37 PM

자동차 전동화 시대를 맞아 중국 국내 자동차 제조사들이 전기 슈퍼카 생산에 적극적으로 참여하고 있다. 최근 GAC 아이온이 소유한 고급 전기차 브랜드 하오핀이 SSR이라는 전기 슈퍼카를 출시해 앞서 BYD의 양왕 U9도 최근 인터넷에 유포됐다. 테스트 영상. 영상에서는 U9가 트랙을 질주하고 있는데 놀랍게도 차량의 브레이크 디스크가 밝은 주황색으로 깜박여서 마치 르망 24시간 경주에 출전하는 것처럼 보입니다. 특히 눈에 띄는 점은 앞바퀴의 브레이크 디스크가 뒷바퀴의 브레이크 디스크보다 최소 두 배 더 밝다는 점입니다. 그러나 빛의 섬광이 제동 시 브레이크 디스크에서 발생하는 불꽃에 의해 발생하는지, 아니면 차량의 조명 효과인지 영상으로는 판단이 불가능합니다. 배기가스

win7 숫자 키보드가 4로 변경되는 문제를 해결하는 방법 win7 숫자 키보드가 4로 변경되는 문제를 해결하는 방법 Jul 14, 2023 am 08:49 AM

일부 Win7 노트북 고객이 숫자 키보드를 사용할 때 u를 입력했는데 4가 되는 이유를 발견합니다. 무슨 일이야? 실제로 이는 노트북의 키보드가 문자 키에 통합되어 있기 때문입니다. 키보드를 닫으면 이 문제를 해결할 수 있습니다. 구체적인 단계는 다음과 같습니다. FN+nunlock 키 변환은 정상적으로 영문자를 입력할 수 있습니다. 이 방법은 고객이 I를 눌러 5로 변경하는 경우에도 사용할 수 있습니다. win7 숫자 키보드 u가 4:1이 되는 문제를 해결하는 방법 더 나은 편의를 위해 노트북에는 작은 키보드 영역이 없습니다. 따라서 숫자 키패드의 기능을 정의하는 키가 있습니다. FN+nunlock 키를 사용하여 변환할 수 있습니다. 일부는 영어나 데이터를 입력하려면 Shift+numlock을 사용해야 합니다. 2.숫자 패드-

Python 함수 소개: 함수 및 함수의 사용 예 Python 함수 소개: 함수 및 함수의 사용 예 Nov 04, 2023 pm 02:14 PM

Python 함수 소개: 함수 개요 및 함수 사용 예: Python에서 any()는 반복 가능한 객체에 있는 요소 중 하나 이상이 true인지 확인하는 데 사용되는 내장 함수입니다. 반복된 객체의 요소 중 하나라도 true이면 True를 반환하고, 그렇지 않으면 False를 반환합니다. 사용법 구문: any(iterable) 매개변수: iterable: 목록, 튜플, 세트 등과 같은 반복 가능한 객체. 반환 값: 반복 가능한 객체에 요소가 하나 이상 있으면 true

OKX 거래 플랫폼의 취급 수수료 목록 OKX 거래 플랫폼의 취급 수수료 목록 Feb 15, 2025 pm 03:09 PM

OKX Trading Platform은 거래 수수료, 인출 수수료 및 금융 수수료를 포함하여 다양한 요금을 제공합니다. 현물 거래의 경우 거래량은 거래량 및 VIP 수준에 따라 다르며 "시장 제조업체 모델"을 채택합니다. 즉, 시장은 각 거래에 대해 낮은 취급 수수료를 청구합니다. 또한 OKX는 통화 표준 계약, USDT 계약 및 배송 계약을 포함한 다양한 선물 계약을 제공하며 각 계약의 수수료 구조도 다릅니다.

C#에서 File.Exists 함수를 사용하여 파일이 존재하는지 확인하는 방법 C#에서 File.Exists 함수를 사용하여 파일이 존재하는지 확인하는 방법 Nov 18, 2023 am 11:25 AM

C#에서 File.Exists 함수를 사용하여 파일이 있는지 확인하는 방법 C# 파일 작업에서 파일이 있는지 확인하는 것은 기본적인 기능 요구 사항입니다. File.Exists 함수는 파일이 존재하는지 확인하는 데 사용되는 C#의 메서드입니다. 이 문서에서는 C#에서 File.Exists 함수를 사용하여 파일이 존재하는지 확인하는 방법을 소개하고 특정 코드 예제를 제공합니다. 네임스페이스 참조 코드 작성을 시작하기 전에 먼저 System.IO 네임스페이스를 참조해야 합니다.

가상 통화는 어떤 통화입니까? 어디서 살까요? 가상 통화는 어떤 통화입니까? 어디서 살까요? Mar 04, 2025 pm 05:42 PM

이 기사는 가상 통화가 암호화에 의존하고 피어 투 피어 네트워크를 통한 거래에 의존하는 디지털 또는 가상 통화 형식이며 비트 코인과 같은 공통 통화를 나열합니다. 일반적으로 코인베이스와 같은 암호 화폐 교환 및 각 거래의 모든 장점과 단점에서 사용할 수 있습니다. 그것은 가상 통화 구매가 높고 가격이 크게 변동하고, 사기와 해킹하기 전에 충분한 연구를 수행하고 정보를 제공 할 수있는 자금에만 투자 할 수 있습니다.

See all articles