2013-02-25 67 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。這種連接類型並沒有真正的特殊用語。