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
连接来自其他表格而不是整个表格的某些选择列上的表格。技术上称为某些选定列的连接表是什么?
它在技术上叫什么?它被称为子查询吗?
是的,这是一个子查询。
这也可以写成:
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替代语法 – 2013-02-25 18:07:13
我想我已经写得更简单了。但我只想知道这个名字。我想添加(由customer_nme从客户组中选择customer_nme)t2 – 2013-02-25 18:08:09
@Abhishekkumar有时候子查询很有用,特别是在应用聚合和分组时。请参阅我的编辑 – Taryn 2013-02-25 18:11:38
你基本上做什么是加入上的匿名查看。想象一下,而不是你做的事:
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
这基本上是同样的事情。
'anonymous view'。这很酷。 – 2013-02-25 18:09:34
这被称为“内部等连接”,因为连接条件是平等的。我不确定你的意思是“从其他表中选择一些列而不是整个表”。连接通常只在表格之间使用一列或两列。列通常是主键或外键。
此查询仅仅让最小值table2.column2
用于table1.column1
和滤除的table1.column1
任何值中的每个值不在table2
。这种连接类型并没有真正的特殊用语。
我一直把它叫做子查询[inner |外| |等等],因为这正是它的原因,所以我不知道除此之外的概念名称。 – RandomUs1r 2013-02-25 18:05:24