2012-08-30 75 views
1

這裏是我的問題。在WHERE子句中將列與自身進行比較

我有兩個表,

表1 -

id | Name | Code 
1 | test | 4 
2 | test | 5 
3 | test4| 6 
4 | test4| 7 
5 | test | 8 
6 | test | 9 

表2 -

id | Code 
1 | 4 
2 | 5 
3 | 6 
4 | 7 
5 | 8 
6 | 9 

這裏代碼列是兩個表中的一樣,我嘗試是,我有代碼從表2我選擇了其他表。例如

SELECT * FROM Table2 LEFT JOIN Table1.Code = Table2.Code WHERE Table2.Code = 4,這很好,現在我得到的結果來自兩個表的相同的代碼,但現在,從這一點來說,當我有表1,我想所有的行與同名稱 。預期的結果我想是

id | Name | Code 
1 | test | 4 
2 | test | 5 
5 | test | 8 
6 | test | 9 

回答

2

你可以嘗試像

SELECT * 
FROm Table1 t1 
WHERE Name IN (
        SELECT t1.Name 
        FROM Table1 t1 INNER JOIN 
          (
           SELECT id, 
             Code 
           FROM Table2 
           WHERE Table2.Code = 4 
          ) t2 ON t1.id = t2.id 
            AND t1.Code = t2.Code 
       ) 

甚至

SELECT * 
FROm Table1 t1 
WHERE Name IN (
        SELECT t1.Name 
        FROM Table2 t2 INNER JOIN 
          Table1 t1 ON t2.id = t1.id 
             AND t2.Code = t1.Code 
        WHERE Table2.Code = 4 
       ) 
+0

它的工作THX :) – user969724