2014-10-27 85 views
-6

我有兩個選擇語句:查詢時出錯,左連接有兩條select語句?

A: select a.1,a.2,a.3 from table1 a 

B: select b.1,b.2,b.3 from table1 b 

現在我加入這兩個語句?

我在下面的方法嘗試,並得到錯誤:

select * 
(select a.1,a.2,a.3 from table1 a) aa 
left join 
(select b.1,b.2,b.3 from table1 b) bb 
aa.a.1 = bb.b.1; 
+0

你缺少其中前aa.a.1 = bb.b.1, – 2014-10-27 09:09:06

+0

請兩個表提供的模式,以及你想從兩者中得到什麼。對於所有這些A和B,這似乎都不太清楚。 – 2014-10-27 09:09:08

+0

你會得到什麼錯誤? (爲什麼你讓我們猜測,而不是馬上告訴我們?) – 2014-10-27 09:57:58

回答

0

在你的左連接,你需要包括ON/WHERE條款:

select * 
(select a.1,a.2,a.3 from table1 a) aa 
left join 
(select b.1,b.2,b.3 from table1 b) bb 
aa.a.1 = bb.b.1, 

應採用以下格式:

SELECT * 
    (SELECT a.1, a.2, a.3 FROM table1 a) aa 
    LEFT JOIN 
    (SELECT b.1,b.2,b.3 FROM table2 b) bb 
    ON a.1 = b.1 
    WHERE ... 

欲瞭解更多詳情,請看這張圖片:

enter image description here

當前標準的,這是非常難以區分究竟你的要求是你想要的查詢返回什麼樣的條件,但我運這個形象將視覺顯示語法爲每個連接。

+0

aa.a.1 = bb.b.1 <=是否正確調用 – 2014-10-27 09:21:09

+0

請參閱編輯(沒有編輯它正確)。 – 2014-10-27 09:24:42

+0

但左邊加入兩個select語句什麼是 – 2014-10-27 09:42:18

0

數字(a.1,a.2,即表別名a的第1列和第2列)通常不是有效的列名。這些列是真的如此命名?那麼你需要一些東西來表明這些是列名。取決於可能是`a.1`或「a.1」或[a.1]的dbms。或者使用不同的名稱,例如num1,num2,num3或一,二,三等。

編輯:您也在符合條件之前缺少單詞ON。而aa.a.1是無效的,因爲你的表別名現在是aa,列名仍然是「1」,並且表別名a不再是已知的。所以它必須是a."1"。此外,您缺少第一個派生表的關鍵字FROM。

select * 
from  (select a."1", a."2", a."3" from table1 a) aa 
left join (select b."1", b."2", b."3" from table1 b) bb ON aa."1" = bb."1";