2016-12-14 70 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连接列有索引设置。