2016-12-14 67 views
1

我有一個像下面兩個表中篩選記錄:如何使用兩個表

表1

id name enrollno subjectname batchname groupname 
1 abc  a1   s1   b1   g1 
2 xyz  a2   s1   b2   g1 

表2

sid subjectname batchname groupname 
1 s1   b1   g1 
2 s2   b2   g1 

我想從Table 1得到記錄它們與TABLE 2中的任何記錄不匹配,如下所示

name groupname batchname subjectname 
xyz  g1   b2   s1 

感謝

回答

2

使用NOT EXISTS

SELECT * 
FROM table1 t1 
WHERE NOT EXISTS(SELECT 1 
        FROM table2 t2 
        WHERE t2.subjectname = t1.subjectname 
         AND t2.batchname = t1.batchname 
         AND t2.groupname = t1.groupname); 
0

你可以使用一個LEFT JOIN這裏:

SELECT t1.name, 
     t1.groupname, 
     t1.batchname, 
     t1.subjectname 
FROM table1 t1 
LEFT JOIN table2 t2 
    ON t1.subjectname = t2.subjectname AND 
     t1.batchname = t2.batchname AND 
     t1.groupname = t2.groupname 
WHERE t2.subjectname IS NULL 

這可能有速度優勢,如果在table2連接列有索引設置。