ホームページ データベース 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

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

i18n を使用して Vue で多言語切り替えを実装するためのヒント i18n を使用して Vue で多言語切り替えを実装するためのヒント Jun 25, 2023 am 09:33 AM

国際化の継続的な発展に伴い、多言語切り替え機能をサポートする必要がある Web サイトやアプリケーションがますます増えています。人気のあるフロントエンド フレームワークとして、Vue は多言語切り替えの実現に役立つ i18n と呼ばれるプラグインを提供します。この記事では、i18n を使用して Vue で多言語切り替えを実装するための一般的なテクニックを紹介します。ステップ 1: i18n プラグインをインストールする まず、npm または Yarn を使用して i18n プラグインをインストールする必要があります。コマンドラインに次のコマンドを入力します: npminst

アウトインターフェイスとインインターフェイスは何を意味しますか? アウトインターフェイスとインインターフェイスは何を意味しますか? Sep 28, 2021 pm 04:39 PM

out インターフェイスは出力インターフェイスを指し、in インターフェイスは入力インターフェイスを指します。出力インターフェイスは通常、スピーカー、ヘッドフォンなどの負荷の接続に使用されるオーディオ ソース ライン出力インターフェイスを表し、一方、入力インターフェイスは通常、CD プレーヤー、モバイル機器の接続に使用されるオーディオ ソース ライン入力インターフェイスを表します。電話、MP3 プレーヤー、コンピュータなど。

U9に期待:中国の新たな人気電気スーパーカー U9に期待:中国の新たな人気電気スーパーカー Oct 13, 2023 pm 03:37 PM

自動車電動化の時代を牽引し、中国国内の自動車メーカーは電動スーパーカーの生産に積極的に取り組んでいる。最近、広汽愛安傘下のハイエンド電気ブランド「Haopin」が「SSR」と呼ばれる電気スーパーカーを発売し、以前はBYDの「Yangwang U9」も広く注目を集めたが、最近ではYangwang.U9のテストビデオを映したとされる動画がインターネット上で拡散した。動画ではU9がコース上を疾走しており、なんとその車両のブレーキディスクが明るいオレンジ色に光り、まるでル・マン24時間レースに出場しているかのようだ。特に印象的なのは、前輪のブレーキ ディスクが後輪のブレーキ ディスクの少なくとも 2 倍明るいという事実です。しかし、ビデオからは、この閃光が制動中にブレーキディスクから発生する炎によって引き起こされているのか、それとも車両の照明効果によるものなのかを判断することはできません。排気

win7のテンキーキーボードが4に変更される問題を解決する方法 win7のテンキーキーボードが4に変更される問題を解決する方法 Jul 14, 2023 am 08:49 AM

Win7 ラップトップの一部のお客様がテンキーを使用する場合、u を入力しても 4 になってしまうという問題に遭遇します。何が起きましたか?実際、これはラップトップのキーボードが文字キーに統合されているためです。この問題は、キーボードを閉じるだけで解決できます。具体的な手順は以下の通りです。 FN+nunlockキーの変換で英文字を正常に入力できます。この方法は、顧客が 5 に変更するために I を押した場合にも使用できます。 win7 テンキー u が 4:1 になる問題の解決方法 利便性を高めるために、ラップトップには小さなキーボード領域がありません。したがって、テンキーの機能を定義するキーがあります。 FN+nunlockキーを使用して変換できます。英語やデータを入力するには、shift+numlock を使用する必要がある人もいます。 2.テンキー-

Python 関数の概要: 関数と関数の使用例 Python 関数の概要: 関数と関数の使用例 Nov 04, 2023 pm 02:14 PM

Python 関数の紹介: 関数の概要と any 関数の使用例: Python では、 any() は、反復可能なオブジェクト内の少なくとも 1 つの要素が true であるかどうかを判断するために使用される組み込み関数です。反復オブジェクト内のいずれかの要素が true の場合は True を返し、それ以外の場合は False を返します。使用構文: any (iterable) パラメータ: iterable: リスト、タプル、セットなどの反復可能なオブジェクト。戻り値: 反復可能なオブジェクトに少なくとも 1 つの要素がある場合は true

OKXトレーディングプラットフォームの取り扱い料金のリスト OKXトレーディングプラットフォームの取り扱い料金のリスト Feb 15, 2025 pm 03:09 PM

OKXトレーディングプラットフォームは、取引手数料、引き出し料金、資金調達料金など、さまざまな料金を提供しています。スポットトランザクションの場合、取引手数料はトランザクションのボリュームと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

この記事では、仮想通貨は暗号化やピアツーピアネットワークを介して取引に依存しているデジタル通貨または仮想通貨フォームであり、ビットコインなどの一般的な通貨をリストしていることを紹介します。通常、Coinbaseなどの暗号通貨交換、および各トランザクションのすべての利点と短所で利用できます。仮想通貨の購入は大きく、詐欺とハッキングを行う傾向があります。

See all articles