SQL文でのwithの使い方
WITH AS 句はサブクエリ部分とも呼ばれ、SQL ステートメント全体で使用される SQL フラグメントを定義できます。 SQL ステートメントを読みやすくしたり、UNION ALL のさまざまな部分にデータを提供する部分として使用したりできます。
– 1 つのエイリアスの場合
with tmp as (select * from tb_name)
– 複数のエイリアスの場合
with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_name3), …
– 一時テーブルの構築と同等
with e as (select * from scott.emp e where e.empno=7499) select * from e;
-これは、e および d の一時テーブルを構築するのと同じです
with e as (select * from scott.emp), d as (select * from scott.dept) select * from e, d where e.deptno = d.deptno;
実際には、繰り返し使用される SQL ステートメントを as を使用して配置し、エイリアスを取得し、それを後続のクエリで使用することです。これは、SQL ステートメントの大規模なバッチで最適化の役割を果たし、明確です。
テーブルにデータを挿入する用途として
insert into table2 with s1 as (select rownum c1 from dual connect by rownum <= 10), s2 as (select rownum c2 from dual connect by rownum <= 10) select a.c1, b.c2 from s1 a, s2 b where…;
s1、s2からs1.sid、s2.sidを選択するには、関連する条件が必要です。そうでない場合、結果はデカルト積になります。
with は仮想ビューと同等です。
as フレーズ (サブクエリ ファクタリングとも呼ばれる) を使用すると、SQL ステートメント全体で使用される SQL フラグメントを定義して、さまざまなことができます。 SQL ステートメントを読みやすくするためである場合もあれば、データを提供する部分として Union All の別の部分に存在する場合もあります。
特にユニオンオールに便利です。 Union all の各部分は同じかもしれませんが、各部分を 1 回実行するとコストが高すぎるため、1 回だけ実行すればよい with as 句を使用できます。 with as 句で定義されたテーブル名が 2 回以上呼び出された場合、オプティマイザは with as 句で取得したデータを一時テーブルに自動的に配置しますが、1 回しか呼び出されなかった場合は、自動的に配置されません。プロンプト・マテリアライズにより、with as フレーズ内のデータがグローバル一時テーブルに強制的に入れられます。この方法で多くのクエリを高速化できます。
with sql1 as (select to_char(a) s_name from test_tempa), sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1)) select * from sql1 union all select * from sql2 union all select ‘no records’ from dual where not exists (select s_name from sql1 where rownum=1) and not exists (select s_name from sql2 where rownum=1);
WITH ステートメントの利点:
(1). SQL の可読性が向上します。たとえば、サブクエリなどを使用して特定のものに意味のある名前を付けます。
(2). with サブクエリは 1 回だけ実行され、結果はユーザーの一時表スペースに保存され、パフォーマンスを向上させるために複数回参照できます。
例: EXCEL のインポート処理中に、データを一時テーブルに保存する必要がある場合があります。次回インポートを実行すると、一時テーブルのデータはクリアされます。ただし、この時点では、一時テーブルのデータはクリアされます。同時実行の問題がある場合、2 人のユーザーがお互いのデータを別々に操作するため、混乱が生じる可能性があります。ただし、WITH 関数と UNION ステートメントを使用して SQL ステートメントを結合し、SESSION に保存することができます。エラー情報をエクスポートするには、この Statements 構成データを使用できます。
関連する推奨事項: 「mysql チュートリアル 」
以上がSQL文でのwithの使い方の詳細内容です。詳細については、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

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

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

1. 依存関係 com.github.ulisesbocchiojasypt-spring-boot-starter2.1.02 を Maven プロジェクトに導入します。同時に、ツールは暗号化または暗号化にこのパスワードを使用するため、application.yml 構成ファイルでパスワードを構成する必要があります。暗号化された文字列は同じパスワードを使用して暗号化されます。そうでないと、プロジェクトの開始時に復号化できません。 jasypt:encryptor:password:1234563. テストケース内の元の情報を暗号化することができます. 利用方法は非常に簡単です。簡単なデモは次のとおりです。 @RunWith(SpringRunner

背景: 企業のニーズの 1 つは、企業の既存のリンク トラッキング ログ コンポーネントが MySQL の SQL 実行時間の出力をサポートする必要があるということです。リンク トラッキングを実装する一般的な方法は、サードパーティのフレームワークまたはツールによって提供されるインターセプタ インターフェイスまたはフィルタ インターフェイスを実装することです。 MySQL も例外ではなく、実際には、MySQL によって駆動されるインターセプタ インターフェイスを実装しているだけです。 MySQL チャネルにはさまざまなバージョンがあり、バージョンごとにインターセプタ インターフェイスが異なるため、使用する MySQL ドライバのバージョンに応じて応答インターセプタを実装する必要があります。次に、MySQL チャネル 5 と 6 をそれぞれ紹介します8。バージョンの実装。ここでは、Statem を実装する例として MySQL チャネル 5.1.18 バージョンを使用して MySQL5 を実装します。

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