MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
SQL Server - WITHのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
SQL Server - WITH
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <code>WITH</code>句があるSQL文は、その後に記述されている<code>SELECT</code>文よりも先に実行される。<br> <code>WITH</code>句は、共通テーブル式またはCTE(Common Table Expression)とも呼ばれる。<br> <br> <code>WITH</code>句のメリットは、<code>FROM</code>句の箇所にあるSQL文が外に出るため、可読性が上がることである。<br> <br> <u>※注意</u><br> <u><code>WITH</code>句は、MySQLの古いバージョンでは未対応である。</u><br> <br> 以下の例は、<code>WITH</code>句を使用している。<br> <syntaxhighlight lang="tsql"> WITH <変数1> as ( SELECT <カラム名> FROM <テーブル名> WHERE <条件> ) SELECT <カラム名> FROM <テーブル名>, <変数1> WHERE <条件>; </syntaxhighlight> <br> <code>WITH</code>句の後にある<変数1>は、SQL文で使用する変数である。<br> その後の括弧内にSQL文を記述する。<br> <br> 2つ目の<code>FROM</code>句の箇所に、<code>WITH</code>句の後にある<変数1>を指定している。<br> <br> これにより、<u><code>WITH</code>句の後にあるSQL文をテーブル(ビュー)のように使用できる。</u><br> これは、<code>FROM</code>句の箇所に記述する副問い合わせと同様の意味となる。<br> <br><br> == WITH句を使用する場合 == 下表に示すテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Sampleテーブル |- | style="background-color:#66CCFF;" | Name | style="background-color:#66CCFF;" | Date | style="background-color:#66CCFF;" | Sales |- | A || 20210101 || 200 |- | B || 20210102 || 150 |- | C || 20210103 || 100 |} </center> <br> 以下の例では、<code>WITH</code>句を使用してデータを抽出している。<br> <syntaxhighlight lang="sql"> WITH T_Test as ( SELECT AVG(Sales) AS SalesAverage FROM T_Sample ) SELECT b.Name, b.Date, b.Sales FROM T_Test a, T_Sample b WHERE a.SalesAverage < b.Sales; </syntaxhighlight> <br> 1行目は、<code>WITH</code>句の後のT_Testは、<code>AS</code>句の後にあるSQL文の名前である。<br> 6行目は、1行目で定義したT_Testを、テーブル(ビュー)のように使用している。<br> <br> 結果は、以下の通りである。<br> Name Date Sales A 20210101 200 <br><br> == WITH句の値が複数の場合 == <code>WITH</code>句の値が複数でも指定できる。<br> 以下の例では、<code>WITH</code>句で複数の値を取得した後、8行目の<code>IN</code>句の条件にしている。<br> <syntaxhighlight lang="sql"> WITH T_Test as ( SELECT Sales FROM T_Sample WHERE Sales > 100 ) SELECT b.Name, b.Date, b.Sales FROM T_Test a, T_Sample b WHERE b.Sales in (a.Sales); </syntaxhighlight> <br> 結果は、以下の通りである。<br> Name Date Sales A 20210101 200 B 20210102 150 <br><br> == WITH句を使用しない場合 == 下表に示すテーブルがある。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ T_Sampleテーブル |- | style="background-color:#66CCFF;" | Name | style="background-color:#66CCFF;" | Date | style="background-color:#66CCFF;" | Sales |- | A || 20210101 || 200 |- | B || 20210102 || 150 |- | C || 20210103 || 100 |} </center> <br> <code>FROM</code>句の箇所にある副問い合わせを使用して、レコードを抽出する。<br> <syntaxhighlight lang="sql"> SELECT b.Name, b.Date, b.Sales FROM ( SELECT AVG(Sales) AS SalesAverage FROM T_Sample ) a, T_Sample b WHERE a.SalesAverage < b.Sales; </syntaxhighlight> <br> 4行目は、Salesカラムの平均を求める副問い合せであり、副問い合わせの結果をテーブル(ビュー)のように使用している。<br> 1つ目の<code>FROM</code>句の中に、SQL文が記述されているため、<code>WITH</code>句より可読性が落ちている。<br> <br> 結果は、以下の通りである。<br> Name Date Sales A 20210101 200 <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:SQL_Server]]
SQL Server - WITH
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse