Sql 某些选定列上的联接表在技术上称为什么?

Sql 某些选定列上的联接表在技术上称为什么?,sql,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 由于您只使用子查询返回一列

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

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


是的,这是一个子查询

这也可以写成:

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
由于您只使用子查询返回一列,而没有使用聚合或其他操作,因此在这种情况下,我不会使用子查询。如果要使用聚合函数,则由于使用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

这基本上是一样的。

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


此查询只是为table1.column1的每个值获取table2.column2的最小值,并过滤掉table1.column1中不在table2中的任何值。对于这种类型的连接,实际上没有专门的短语。

我一直称它为子查询[inner | outer | etc..]连接,因为它就是这样,我不知道除此之外还有什么概念名称。我想我写得更简单了。但我只是想知道名字。我想按customer\u nme从customer group中添加select customer\u nmet2@Abhishekkumar有时子查询很有用,尤其是在应用聚合和分组方式时。请看我的编辑,但是你必须小心子查询,因为它们可能会以不太明显的方式影响性能。@bluefeet内部查询可以称为子查询,但这个连接称为简单连接还是有其他技术名称?@Abhishekkumar它只是一个连接。确切地说,我在表和子查询上使用内部联接
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