2013-02-25 68 views
0
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

我一直把它叫做子查询[inner |外| |等等],因为这正是它的原因,所以我不知道除此之外的概念名称。 – RandomUs1r 2013-02-25 18:05:24

回答

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 
+0

+1替代语法 – 2013-02-25 18:07:13

+0

我想我已经写得更简单了。但我只想知道这个名字。我想添加(由customer_nme从客户组中选择customer_nme)t2 – 2013-02-25 18:08:09

+0

@Abhishekkumar有时候子查询很有用,特别是在应用聚合和分组时。请参阅我的编辑 – Taryn 2013-02-25 18:11:38

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 

这基本上是同样的事情。

+0

'anonymous view'。这很酷。 – 2013-02-25 18:09:34

0

这被称为“内部等连接”,因为连接条件是平等的。我不确定你的意思是“从其他表中选择一些列而不是整个表”。连接通常只在表格之间使用一列或两列。列通常是主键或外键。

此查询仅仅让最小值table2.column2用于table1.column1滤除的table1.column1任何值中的每个值不在table2。这种连接类型并没有真正的特殊用语。