Select t1.column1,t1.column2,t2.column1,t2.column2 from table1 t1
join (select column1,min(column2) from table2 group by column1) t2
On table1.column1 = table2.column1
テーブル全体ではなく、他のテーブルから選択した列のテーブルを結合します。
技術的には何と呼ばれていますか?サブクエリと呼ばれていますか?
Select t1.column1,t1.column2,t2.column1,t2.column2 from table1 t1
join (select column1,min(column2) from table2 group by column1) t2
On table1.column1 = table2.column1
テーブル全体ではなく、他のテーブルから選択した列のテーブルを結合します。
技術的には何と呼ばれていますか?サブクエリと呼ばれていますか?
はい、サブクエリです。
これは、次のように書くこともできます。
Select t1.column1,
t1.column2,
t2.column1
from table1 t1
join table2 t2
On t1.column1 = t2.column1
サブクエリを使用して 1 つの列を返すだけで、集計やその他の操作を使用していないため、その状況ではサブクエリを使用しません。集約関数を使用したい場合は、以下を使用することでサブクエリを使用する方が簡単な場合がありますgroup by
。
Select t1.column1,
t1.column2,
t2.column1
from table1 t1
join
(
select column1, MAX(date) MaxDate
from table2
group by column1
) t2
On t1.column1 = t2.column1
あなたが本質的にやっていることは、匿名のビューに参加することです。代わりにあなたがしたと想像してください:
create view t2 as select column1 from table2
select t1.column1, t1.column2, t2.column1 from table1 t1 join t2 on t1.column1 = t2.column2
それは基本的に同じことです。
結合条件が等式であるため、これは「内部等結合」と呼ばれます。「テーブル全体ではなく、他のテーブルから列を選択する」とはどういう意味かわかりません。結合は通常、テーブル間で1つまたは2つの列のみを使用します。列は通常、主キーまたは外部キーのいずれかです。
このクエリはtable2.column2
、の各値の最小値を取得し、にない値table1.column1
を除外するだけです。まさにこのタイプの結合に特別なフレーズはありません。table1.column1
table2