SQL文でのwithの使い方

Aug 06, 2021 pm 05:54 PM
sql

WITH AS 句はサブクエリ部分とも呼ばれ、SQL ステートメント全体で使用される SQL フラグメントを定義できます。 SQL ステートメントを読みやすくしたり、UNION ALL のさまざまな部分にデータを提供する部分として使用したりできます。

SQL文でのwithの使い方

– 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

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

Oracle SQLでの除算演算の使用法 Oracle SQLでの除算演算の使用法 Mar 10, 2024 pm 03:06 PM

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

Oracle と DB2 の SQL 構文の比較と相違点 Oracle と DB2 の SQL 構文の比較と相違点 Mar 11, 2024 pm 12:09 PM

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

SQL の ID 属性は何を意味しますか? SQL の ID 属性は何を意味しますか? Feb 19, 2024 am 11:24 AM

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

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

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

SpringBoot が構成ファイルの SQL アカウントのパスワードを暗号化する方法 SpringBoot が構成ファイルの SQL アカウントのパスワードを暗号化する方法 May 22, 2023 pm 08:50 PM

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

Java は MySQL ドライバー インターセプターをどのように使用して、時間のかかる SQL 計算を実装しますか? Java は MySQL ドライバー インターセプターをどのように使用して、時間のかかる SQL 計算を実装しますか? May 27, 2023 pm 01:10 PM

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

SQL の 5120 エラーを解決する方法 SQL の 5120 エラーを解決する方法 Mar 06, 2024 pm 04:33 PM

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

See all articles