在技​​术上称为某些选定列的连接表是什么?

时间:2013-02-25 18:01:30

标签: sql

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

从其他表而不是整个表中连接某些选择列的表。

  

技术上叫什么?它被称为子查询吗?

3 个答案:

答案 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的任何值}}。对于这种类型的连接,实际上并没有特别的短语。