

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# FROM 句
<a name="r_FROM_clause30"></a>

クエリ内の FROM 句は、データの選択下のテーブル参照 (テーブル、ビュー、サブクエリ) を一覧表示します。複数のテーブル参照が一覧表示されている場合、FROM 句または WHERE 句のいずれかの適切な構文を使って、テーブル参照を結合する必要があります。結合基準を指定していない場合、クエリはクロス結合 (デカルト積) として処理されます。

**Topics**
+ [構文](#r_FROM_clause30-synopsis)
+ [パラメータ](#r_FROM_clause30-parameters)
+ [使用に関する注意事項](#r_FROM_clause_usage_notes)
+ [PIVOT と UNPIVOT の例](r_FROM_clause-pivot-unpivot-examples.md)
+ [JOIN 句の例](r_Join_examples.md)
+ [UNNEST の例](r_FROM_clause-unnest-examples.md)

## 構文
<a name="r_FROM_clause30-synopsis"></a>

```
FROM table_reference [, ...]
```

ここで *table\_reference* は、次のいずれかになります。

```
with_subquery_table_name [ table_alias ]
table_name [ * ] [ table_alias ]
( subquery ) [ table_alias ]
table_reference [ NATURAL ] join_type table_reference
   [ ON join_condition | USING ( join_column [, ...] ) ]
table_reference  join_type super_expression 
   [ ON join_condition ]
table_reference PIVOT ( 
   aggregate(expr) [ [ AS ] aggregate_alias ]
   FOR column_name IN ( expression [ AS ] in_alias [, ...] )
) [ table_alias ]
table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] ( 
   value_column_name 
   FOR name_column_name IN ( column_reference [ [ AS ]
   in_alias ] [, ...] )
) [ table_alias ]
UNPIVOT expression AS value_alias [ AT attribute_alias ]
( super_expression.attribute_name ) AS value_alias [ AT index_alias ]
UNNEST ( column_reference )
  [AS] table_alias ( unnested_column_name )
UNNEST ( column_reference ) WITH OFFSET
  [AS] table_alias ( unnested_column_name, [offset_column_name] )
```

オプションの *table\_alias* を使用して、テーブルと複雑なテーブル参照 (および必要に応じてその列) に、次のような一時名を付けることができます。

```
[ AS ] alias [ ( column_alias [, ...] ) ]
```

## パラメータ
<a name="r_FROM_clause30-parameters"></a>

 *with\_subquery\_table\_name*   
[WITH 句](r_WITH_clause.md) のサブクエリで定義されるテーブル。

 *table\_name*   
テーブルまたはビューの名前。

 *alias*   
テーブルまたはビューの一時的な代替名。エイリアスは、サブクエリから生成されたテーブルに対して提供する必要があります。他のテーブル参照では、エイリアスはオプションです。AS キーワードは常にオプションです。テーブルエイリアスは、WHERE 句など、クエリの別の部分のテーブルを識別するため、便利なショートカットを提供します。次に例を示します。  

```
select * from sales s, listing l
where s.listid=l.listid
```

 *column\_alias*   
テーブルまたはビュー内の列に対する一時的な代替名。

 *subquery*   
テーブルに対して評価を実行するクエリ式。テーブルは、クエリの有効期間中のみ存在し、通常は名前またはエイリアス**が与えられます。ただし、エイリアスは必須ではありません。また、サブクエリから生成されたテーブルに対して、列名を定義することもできます。サブクエリの結果を他のテーブルに結合する場合、および列をクエリ内のどこかで選択または拘束する場合、列のエイリアスの命名は重要です。  
サブクエリには ORDER BY 句が含まれることがありますが、LIMIT または OFFSET 句も併せて指定しない場合、この句には効力がありません。

NATURAL   
2 つのテーブル内で同じ名前を付けられた列のペアをすべて結合列として、自動的に使用する結合を定義します。明示的な結合条件は必要ありません。例えば、CATEGORY と EVENT の両方のテーブルに CATID という名前の列が存在する場合、これらのテーブルの NATURAL 結合は CATID 列による結合です。  
NATURAL 結合を指定しても、結合対象のテーブルに同じ名前の列ペアが存在しない場合、クエリはデフォルト設定のクロス結合になります。

 *join\_type*   
以下のいずれかの結合タイプを指定します。  
+ [INNER] JOIN 
+ LEFT [OUTER] JOIN 
+ RIGHT [OUTER] JOIN 
+ FULL [OUTER] JOIN 
+ CROSS JOIN 
クロス結合は非限定の結合で、2 つの表のデカルト積を返します。  
内部結合と外部結合は限定結合です。これらの結合は、FROM 句の ON または USING 構文、または WHERE 句条件を使った (Natural 結合での) 黙示的な結合です。  
内部結合は、結合条件、また結合列のリストに基づいて、一致する行だけを返します。外部結合は、同等の内部結合が返すすべての行に加え、「左側の」表、「右側の」表、または両方の表から一致しない行を返します。左の表は最初に一覧表示された表で、右の表は 2 番目に一覧表示された表です。一致しない行には、出力列のギャップを埋めるため、NULL が含まれます。

ON join\_condition**   
結合列を ON キーワードに続く条件として記述する、結合タイプの指定。次に例を示します。  

```
sales join listing
on sales.listid=listing.listid and sales.eventid=listing.eventid
```

USING ( join\_column** [, ...] )   
結合列をかっこで一覧表示する結合の指定タイプ。複数の結合列を指定する場合、カンマによって区切ります。USING キーワードは、リストより前に指定する必要があります。例えば、次のようになります。  

```
sales join listing
using (listid,eventid)
```

PIVOT  
表形式のデータを読みやすい形式で表現するために、出力を行から列に変更します。出力が複数の列にわたって水平に表されます。PIVOT は、(集計式を使用して出力形式を指定する)集計が含まれる GROUP BY クエリに似ています。ただし GROUP BY とは対照的に、結果は行ではなく列で返されます。  
PIVOT および UNPIVOT を使用してクエリする方法の例については、「[PIVOT と UNPIVOT の例](r_FROM_clause-pivot-unpivot-examples.md)」をご確認ください。

UNPIVOT  
*UNPIVOT による列から行への変換* – この演算子は、入力テーブルまたはクエリ結果の結果列を行に変換して、出力を読みやすくします。UNPIVOT は、入力列のデータを 2 つの結果列 (name 列と value 列) として統合します。name 列には、入力の列名が行エントリとして格納されています。value 列には、集計の結果など、入力列の値が含まれます。例えばこれは、さまざまなカテゴリについての項目数などです。  
*UNPIVOT (SUPER) によるオブジェクトのピボット解除* – オブジェクトのピボット解除を実行できます。ここで、*expression* は別の FROM 句項目を参照する SUPER 式です。詳細については、「[オブジェクトのピボット解除](query-super.md#unpivoting)」を参照してください。また、JSON 形式のデータなど、半構造化データをクエリする方法を示す例も含まれています。

*super\_expression*  
有効な SUPER 式。Amazon Redshift は、指定された属性の値ごとに 1 行を返します。SUPER データ型の詳細については、「[SUPER タイプ](r_SUPER_type.md)」を参照してください。ネストされていない SUPER 値の詳細については、「[ネストされていないクエリ](query-super.md#unnest)」を参照してください。

*attribute\_name*  
SUPER 式の属性の名前。

*index\_alias*  
SUPER 式内の値の位置を示すインデックスのエイリアス。

UNNEST  
ネストされた構造 (通常は SUPER 配列) を、ネストされていない要素を含む列に展開します。SUPER データのネスト解除の詳細については、「[半構造化データのクエリ](query-super.md)」を参照してください。例については「[UNNEST の例](r_FROM_clause-unnest-examples.md)」を参照してください。

*unnested\_column\_name*  
ネストされていない要素を含む列の名前。

UNNEST ... WITH OFFSET  
オフセット列をネストされていない出力に追加します。オフセットは配列内の各要素のゼロベースのインデックスを表します。このバリアントは、配列内の要素の位置を確認する場合に便利です。SUPER データのネスト解除の詳細については、「[半構造化データのクエリ](query-super.md)」を参照してください。例については「[UNNEST の例](r_FROM_clause-unnest-examples.md)」を参照してください。

*offset\_column\_name*  
オフセット列のカスタム名。インデックス列を出力に表示する方法を明示的に定義できます。このパラメータはオプションです。デフォルトでは、オフセット列名は `offset_col` です。

## 使用に関する注意事項
<a name="r_FROM_clause_usage_notes"></a>

列を結合するには、データ型に互換性がなければなりません。

NATURAL または USING 結合は、中間結果セットの結合列の各ペアの一方だけを保持します。

ON 構文を使った結合は、中間結果セットの両方の結合列を保持します。

「[WITH 句](r_WITH_clause.md)」も参照してください。