2013-09-25 98 views
0

我想加入2個表,但沒有INNER JOIN但是嵌套查詢。從查詢和子查詢中返回字段

我有2個表:

  • 表A:AField1,AField2,AField3,AField4
  • 表B:BField1,BField2,BField3

表之間的鏈接是AField1和BField1。

SELECT AField1, AField2, AField3 
FROM TableA 
WHERE AField1 IN (
    SELECT BField1 FROM TableB 
    WHERE BField3 like 'E11%' 
    ); 

我想結果AField1,AField2,AField3,AField4 BField2,BField3

任何想法?

感謝

+0

所以,你想要的是:你有Table 1和Table和你正試圖獲得表2的數據,而不從表2中選擇?爲什麼你想在沒有INNER JOIN的情況下實現這個目標? – hims056

+0

你能解釋一下你想用一些樣本數據達到什麼目的嗎? – hims056

+0

很明顯,在結果中我需要來自TableA和TableB的一些字段。爲什麼不加入INNER JOIN,我遇到了性能問題,我想以另一種方式進行測試。 –

回答

0

我相信這是你想要達到的 - 顯然,這個解決方案是基於連接的完整性隊伍。所以你必須確保PK匹配,以確保你沒有得到不適當的加入。

SELECT a.AField1, 
    a.AField2, 
    a.AField3, 
    bb.BField2, 
    bb.BField3 
FROM TableA a 
WHERE EXISTS 
    (SELECT 'X' 
    FROM TableB b 
    WHERE b.BField3 LIKE 'E11%' 
    AND a.AField1 = b.BField1 
) 
    (SELECT * FROM TableB WHERE BField3 LIKE 'E11%' 
) bb 
AND a.AField1 = bb.BField1 

在SQL你可以別名表 - 閱讀更多關於它在這裏:When to use SQL Table Alias

+0

由於OP試圖提高性能,我認爲這不會比'JOIN'更好。 – hims056

+0

你可以使用相關的子查詢;然而,你會失去選擇b.BField2,b.BField3 –

+0

[我告訴他同樣的]的能力(http://stackoverflow.com/questions/18997150/return-fields-from-query-and-subquery#comment -28064609) – hims056