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
从其他表而不是整个表中连接某些选择列的表。
技术上叫什么?它被称为子查询吗?
答案 0 :(得分:1)
是的,这是一个子查询。
这也可以写成:
Select t1.column1,
t1.column2,
t2.column1
from table1 t1
join table2 t2
On t1.column1 = t2.column1
由于您只使用子查询返回一列而您没有使用聚合或其他操作,因此在这种情况下我不会使用子查询。如果要使用聚合函数,那么由于使用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
答案 1 :(得分:1)
您实际上在做的是加入匿名视图。想象一下,你做了:
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
这基本上是一回事。
答案 2 :(得分:0)
这称为“内部等连接”,因为连接条件是相等的。我不确定你的意思是“从其他表中选择一些列而不是整个表”。连接通常在表之间仅使用一列或两列。列通常是主键或外键。
此查询只是为table2.column2
的每个值获取最小值table1.column1
,并过滤掉table1.column1
中不在table2
的任何值}}。对于这种类型的连接,实际上并没有特别的短语。