SQLにおけるExistsの使用例を詳しく解説
この記事では主に SQL での Exists の使用法を紹介します。非常に優れており、参考になります。
たとえば、Northwind データベースには
SELECT c.CustomerId,CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)
How do EXISTS work here というクエリがあります。 ?サブクエリは OrderId フィールドを返しますが、外部クエリは CustomerID フィールドと CompanyName フィールドを探しています。これらの 2 つのフィールドは、どのように一致するのでしょうか。
EXISTS は、サブクエリが少なくとも 1 行のデータを返すかどうかを確認するために使用されます。サブクエリは実際にはデータを返しませんが、行の存在を検出するために True または False を返します。
構文: EXISTS サブクエリ
パラメータ: サブクエリは制限された SELECT ステートメントです (COMPUTE 句と INTO キーワードは許可されません)。
結果の型: ブール型 サブクエリに行が含まれる場合は TRUE を返し、それ以外の場合は FLASE を返します。
テーブル A の例: TableIn テーブル B の例: TableEx
(1)。サブクエリで NULL を使用しても、結果セットが返されます
select * from TableIn where exists(select null)
は、 select * from TableIn
と同等です。 ( 2). EXISTS と IN を使用してクエリを比較します。両方のクエリが同じ結果を返すことに注意してください。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME) select * from TableIn where ANAME in(select BNAME from TableEx)
(3) EXISTS と = ANY を使用してクエリを比較します。両方のクエリが同じ結果を返すことに注意してください。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME) select * from TableIn where ANAME=ANY(select BNAME from TableEx)
NOT EXISTS は EXISTS の正反対のことを行います。サブクエリが行を返さない場合、NOT EXISTS の WHERE 句は満たされます。
結論: EXISTS (NOT EXISTS を含む) 句の戻り値は BOOL 値です。 EXISTS 内にサブクエリ ステートメント (SELECT ... FROM...) があり、これを EXIST の内部クエリ ステートメントと呼びます。その中のクエリ ステートメントは結果セットを返します。 EXISTS 句は、その中のクエリ ステートメントの結果セットが空か空ではないかに基づいてブール値を返します。
これを理解する一般的な方法は次のとおりです。テストとして、外部クエリ テーブルの各行を内部クエリに代入します。内部クエリから返された結果が null 以外の値を取る場合、EXISTS 句は TRUE を返し、この行は返されます。外部クエリの結果行として使用できます。それ以外の場合は結果として使用できません。
アナライザーはまずステートメントの最初の単語を調べ、最初の単語が SELECT キーワードであることを検出すると、FROM キーワードにジャンプし、FROM キーワードを通じてテーブル名を検索し、テーブルをメモリにロードします。 。次のステップでは、WHERE キーワードが見つからない場合は SELECT に戻り、WHERE が見つかった場合はその中の条件を分析します。フィールドを分析します。最後に、仮想テーブルが形成される。
WHEREキーワードに続くのは条件式です。条件式が計算されると、非ゼロまたは 0 の戻り値が返されます。非ゼロは真 (真) を意味し、0 は偽 (偽) を意味します。同様に、WHERE の後の条件にも戻り値 (true または false) があり、次に SELECT を実行するかどうかを決定します。
アナライザーは最初にキーワード SELECT を見つけ、次に FROM キーワードにジャンプして STUDENT テーブルをメモリにインポートし、ポインターを介して最初のレコードを見つけて、次に WHERE キーワードを見つけて、それが true である場合にその条件式を計算します。レコードが仮想テーブルにロードされ、ポインタが次のレコードを指します。 false の場合、ポインタは他の操作を実行せずに次のレコードを直接指します。常にテーブル全体を取得し、取得した仮想テーブルをユーザーに返します。 EXISTS は条件式の一部であり、戻り値 (true または false) も持ちます。
レコードを挿入する前に、レコードが既に存在するかどうかを確認する必要があります。レコードが存在しない場合にのみ挿入操作が実行されます。EXISTS 条件ステートメントを使用すると、重複レコードの挿入を防ぐことができます。
INSERT INTO TableIn (ANAME,ASEX) SELECT top 1 '张三', '男' FROM TableIn WHERE not exists (select * from TableIn where TableIn.AID = 7)
EXISTS と IN の使用効率に関しては、IN はインデックスを使用しないため、通常は in よりもexisting を使用する方が効率的ですが、具体的な使用方法は実際の状況によって異なります。
IN は、外部のtable が大きく、inner table が小さい場合、EXISTS は外面は小さいが内面は大きい場合に適しています。
以上がSQLにおけるExistsの使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

JSP コメントの分類と使用状況の分析 JSP コメントは 2 つのタイプに分類されます。 単一行コメント: で終わる、単一行のコードのみコメントできます。複数行のコメント: /* で始まり */ で終わると、複数行のコードにコメントを付けることができます。単一行のコメントの例 複数行のコメントの例/**これは複数行のコメントです*コードの複数行にコメントできます*/JSP コメントの使用法 JSP コードを読みやすくするために JSP コメントを使用できます。

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

WPS は一般的に使用されるオフィス ソフトウェア スイートであり、WPS テーブル関数はデータ処理と計算に広く使用されています。 WPS テーブルには、2 つの日付間の時差を計算するために使用される、DATEDIF 関数という非常に便利な関数があります。 DATEDIF 関数は英語の DateDifference の略語で、構文は次のとおりです: DATEDIF(start_date,end_date,unit) ここで、start_date は開始日を表します。
