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

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

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

4

3 回答 3

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
于 2013-02-25T18:05:04.183 回答
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

这基本上是一样的。

于 2013-02-25T18:05:40.523 回答
0

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

此查询只是获取 的table2.column2每个值的最小值table1.column1 过滤掉任何table1.column1不在 中的值table2。对于这种类型的连接并没有真正的特殊短语。

于 2013-02-25T18:35:34.540 回答