WITH句
複雑な条件指定をしたテーブル同士を結合させたテーブルを使うとき等、ほかの人が読んだら意味が分からないようなSQLを読みやすくするため、また自分の理解を助けるために使用する方法としてWITH句がある。
使いたいケース
1つのテーブルをカラム3の条件ごとにWERE句で絞り込んで結合させ、カラム1を横並びで持ってくる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SELECT t1.カラム1,t2.カラム1,t3.カラム1,t4.カラム1 FROM table t1 INNER JOIN table t2 ON t1.カラム2 = t2.カラム2 INNER JOIN table t3 ON t1.カラム2 = t3.カラム2 INNER JOIN table t4 ON t1.カラム2 = t4.カラム2 WHERE t1.カラム3 = t1の条件 AND t2.カラム3 = t2の条件 AND t3.カラム3 = t3の条件 AND t4.カラム3 = t4の条件 |
WITH句を使った書き方
先にWITH句で条件を絞ったテーブルを作って読みやすくする。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
with t1 as (SELECT カラム1,カラム2,カラム3 FROM table WHERE カラム3 = t1の条件) ,t2 as (SELECT カラム1,カラム2,カラム3 FROM table WHERE カラム3 = t2の条件) ,t3 as (SELECT カラム1,カラム2,カラム3 FROM table WHERE カラム3 = t3の条件) ,t4 as (SELECT カラム1,カラム2,カラム3 FROM table WHERE カラム3 = t4の条件) SELECT t1.カラム1,t2.カラム1,t3.カラム1,t4.カラム1 FROM table t1 INNER JOIN table t2 ON t1.カラム2 = t2.カラム2 INNER JOIN table t3 ON t1.カラム2 = t3.カラム2 INNER JOIN table t4 ON t1.カラム2 = t4.カラム2 |
コメント