「sql with」で検索したあなたへ【SQL基礎】
Sal
sql SQLのwith文では。一度selectした結果の保存,使い回しを可能にし、副問い合わせのネストの簡略化も実現できる。

「sql with」で検索したあなたへ【SQL基礎】

  1. 「sql with」とは
  2. 「sql with 使い方」で検索したあなたへ
  3. サンプルテーブル
## 「sql with」とは
SQLのwith文では - 一度selectした結果の保存,使い回しを可能に - 副問い合わせのネストの簡略化
## 「sql with 使い方」で検索したあなたへ
with の後に一時テーブル名を宣言 as のあとの括弧の内部にselect文を書くことで、テーブルの使い回し、副問い合わせのネストの簡略化が可能になる。

-- 宣言部分
with 一時テーブル as (
    select ~
)


-- 再利用部分
select
    *
from
    一時テーブル
例えば、次の部署コードテーブルから部署一覧を取り出し、 その中の部署コードから従業員を取り出したい時 - employees
id name salary dept_id
1234 tarou 10,00 20
1235 kaiou 20.000 20
1236 nanashi 30,00 10000
- Department
id name
20 情報システム室
10 品質管理室
通常の副問い合わせだと次のようなクエリになる

select
    *
from
    employee e
where
    e.dept_id IN (
        select
            id
        from
            department
    )
これは通常の理解可能な範囲であるが、通常ネストは少なければ少ないほどよい。 というわけで、with文を使うと次のようなコードになる。

with
    ALL_DEPTARTMENT_TABLE
as (
    select
        id
    from
        department
)

select
    *
from
    employee e
where
    e.dept_id IN ALL_DEPTARTMENT_TABLE
二つのクエリとして分割することに成功し、 コードもグッと見やすくなった。 このように、with文を使うことでネストを浅くし、クエリを見やすくできる。
## サンプルテーブル
- employees
id name salary dept_id
1234 tarou 10,00 20
1235 kaiou 20.000 20
1236 nanashi 30,00 10000
- Department
id name
20 情報システム室
10 品質管理室
title:「sql with」で検索したあなたへ【SQL基礎】 description:SQLのwith文では。一度selectした結果の保存,使い回しを可能にし、副問い合わせのネストの簡略化も実現できる。 img:https://www.oreilly.co.jp/books/images/picture_large4-87311-281-8.jpeg category_script:page_name.startswith("1")