2016-04-10 73 views

回答

0

我相信你的意思是在一個查詢。有兩種方法我能想到的提取物對單個查詢多個表的數據沒有「加入」他們:

拳是工會

SELECT A, B, C FROM Table1 
UNION 
SELECT X, Y, Z FROM Table2 

你也可以做一個「交叉聯接」這看起來並不像一個連接(並且是你所想的大概是什麼)

SELECT Table1.A, Table1.B, Table1.C, Table2.X, Table2,Y, Table2,Z 
FROM Table1, Table2 

正如你可以看到從語法不存在從一個表的其他關係。這意味着table1中的每一行都將與table2中的每一行相結合!

根據我的經驗,這是程序員新到SQL所犯的最常見的錯誤。當他們表示連接時,他們進行交叉連接,然後他們使用GROUP BY或DISTINCT來獲得他們想要的結果。這是非常低效的!

但是,交叉連接可以很好,特別是當你的表中只有一行時 - 那麼你將這些值添加到其他表中的每一行。你基本上爲每一行選擇一組列值。

,如果你想每一行具有最大的日期(這往往是在報告完成)

SELECT * 
FROM Table1, (SELECT MAX(updatedate) as Max_Update FROM Table1) AS MaxDate 
+0

THANK YOU霍根一樣! – Justin

+0

@Justin - yw,確保你檢查了編輯,我添加了關於交叉連接的使用說明。 – Hogan

0

不一定,還有其他選項,如聯:

SELECT customerNumber id, contactLastname name 
FROM customers 
UNION 
SELECT employeeNumber id,firstname name 
FROM employees 

上面的例子是採取從this. 還有其他時候,你可以同時運行多個查詢,等等同出一加入以獲得來自多個來源的數據。這完全取決於你想要做什麼。但是,連接是一種非常常見的 - 也許是最常用的方法。