black}Windows・Linuxを中心に書き留めるIT技術系の備忘録。BY・HAVINGで別名使用可データベースTwitter1Facebook2はてブ1Pocket0LINEコピー2020.01.17この記事は約4分で読めます。MySQLでSELECT文のSQLを実行していた時にふと気付きました。BY句・HAVING句でカラムに付けた別名(AS句)を指定できるんですね。Serverなどの他のRDMSは普通使えなかったような...。いうことで、調べました。今回のバージョンは以下の通りです。SELECT文の評価・実行順序SQLのSELECT文を実行すると、RDMSの内部で各句が順番に解釈されますが、その際の順番を実行順序(評価順序)と言います。その実行順序は上から順・下から順という単純なものではなく、次のようになっています。集約関数などこちらはOracleのものですが、どのRDMSも基本的にこんな感じです。赤字は主要なものです。SELECT句はSQL文の先頭ですが、だいぶ後ろの方になっていますね。そのため、SELECT句でAS句を使用してカラムに別名を付けたものをWHERE句などで使用することはできません。WHERE句などの評価順序がSELECT句よりも前だからです。BY句ならSELECT句よりも実行順序が後ろなので使用できます。WordPressで2019年に公開した投稿・固定ページの件数を月ごとに出すSQLは、以下のようになります。BY句・HAVING句ではその別名を使用できません。ちなみに、このSQLはこんな感じでデータが取れます。BY句・HAVING句で使用できます。先ほどのSQLを以下のように変更しても、エラーなく実行できます。post_or_pageこれは知らなかった。COUNTなどのグループ関数を使用している場合は見やすいし、理解しやすいのでありがたいです。MySQLの公式ドキュメント内を探してみたんですが、実行順序についての記載を見つけることはできませんでした。BY句・HAVING句で別名使用可と覚えておこうと思います。SELECT文の評価順序(実行順序)についてでした。BY句・HAVING句にSELECT句で指定したカラムの別名を使用できます。SQL\よかったらシェアしてね/Twitter1Facebook2はてブ1Pocket0LINEコピーえふめん大阪在住、30代。業務系SE・社内SEの仕事を通じて学んだこと、PCトラブルで困って調べたこと、手作業を効率化して改善したこと、WordPressのブログ運営などの記事を書いています。最新情報をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。ホームデータベースえふめん大阪在住、30代。業務系SE・社内SEの仕事を通じて学んだこと、PCトラブルで困って調べたこと、手作業を効率化して改善したこと、WordPressのブログ運営などの記事を書いています。プロフィールプライバシーポリシーお問い合わせサイトマップ検索タイトルとURLをコピーしました。