列・AS の別名・関数が混ざった選択リスト
列の参照、AS で名前を付けた式、AS のない関数の呼び出しを 1 つの SELECT に並べた例です。それぞれ出力列がどう命名されるかを確かめます。
入力
SQL
SELECT u.id, u.name AS user_name, count(*) FROM users u
結果
エラー 0 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 全体 同名の出力列はありません。
| 出力列の数 | 3 列 |
|---|---|
| 同名の出力列の組 | 0 組 |
| 名前を判定できなかった列 | 0 列 |
出力列の一覧
| # | 式 | 出力列名 | 名前の決まり方 |
|---|---|---|---|
| 1 | u.id | id | 列参照なので、その列の名前 |
| 2 | u.name | user_name | AS の別名(引用符なしなので小文字にそろえる) |
| 3 | count(*) | count | 関数呼び出しなので、関数の名前 |
検算(この結果になる理由)
u.id は単純な列参照なので列の名前 id、u.name は AS で user_name、count(*) は関数の呼び出しなので関数の名前 count になります(SELECT 文書「SELECT List」)。3 列で同名はなく、指摘はありません。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 完全な SQL の構文解析はしません。サブクエリ・CTE(WITH 句)・UNION を含む問い合わせは、最初の SELECT の選択リストだけを調べるか、判定不能と表示します。
- * や t.* は表の定義で列が決まるため、展開後の列名は判定せず「全列」と表示します。
- 型変換の ::型 を含む式や、サブクエリを式に使った項目の出力名は判定不能と表示します。
- AS を省いた別名は、末尾の名前を別名と読む簡易な規則です。キーワードと同じ名前の別名は AS が必要になる点に注意してください。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。