あけましておめでとうございます。今年もプログラ生活をよろしくお願いいたします。
さて、今年一発目はWITHの使い方です。
WITH
結構前に、サブクエリの話をしました。
WITHはこのようなサブクエリを可読性良く書けるのが特徴です。
早速書いてみよう。
上記の過去記事のSQLはこんなかんじでした。
SELECT * FROM ( SELECT PersonType, COUNT(BusinessEntityID) AS CNT FROM Person.Person WHERE MiddleName IS NOT NULL GROUP BY PersonType ) TBL1 WHERE CNT > 100
これの出力はこんなかんじでした。
これをWITHを使って書いてみます。
WITH TBL AS (SELECT PersonType, COUNT(BusinessEntityID) AS CNT FROM Person.Person WHERE MiddleName IS NOT NULL GROUP BY PersonType ) SELECT * FROM TBL WHERE CNT > 100
こんなかんじです。
サブクエリとしていた部分を分離しているようにかけているので、見やすくなりましたね。
複数定義することも可能です。
適当に、WITHで定義したテーブルを内部結合してみます。
WITH TBL1 AS ( SELECT * FROM Person.Person ) ,TBL2 AS ( SELECT * FROM Person.Password ) SELECT * FROM TBL1 T1 INNER JOIN TBL2 T2 ON T1.BusinessEntityID = T2.BusinessEntityID
こんなかんじに、可読性を考えてあげるとメンテナンスもしやすくなるので積極的に使っていきたいですね。