将Sql"Not In"更改为"Left Outer Join"

mku*_*kus 2 t-sql sql-server join

我不想使用"不在"这个SQL查询.我该怎么做?谢谢

SELECT  
 T2.Sno,
 T2.Name,
 T1.description,
 T2.UserCode            
FROM 
 Table1 AS T1 (nolock)
    INNER JOIN T2 (nolock)
    ON T1.UserCode = T2.UserCode
WHERE
 g.xid= @p_xid
 and T2.Sno not in (select Gid from T3 (nolock))
Run Code Online (Sandbox Code Playgroud)

Dav*_*d M 6

假设T2中没有行,其中Sno为空,而在T3中,Gid为空:

SELECT  
 T2.Sno,
 T2.Name,
 T1.description,
 T2.UserCode            
FROM 
 Table1 AS T1 WITH (nolock)
    INNER JOIN T2 WITH (nolock)
      LEFT JOIN T3 WITH (NOLOCK)
      ON T2.Sno = T3.Gid
    ON T1.UserCode = T2.UserCode
WHERE
 g.xid= @p_xid
 and T3.Gid IS NULL
Run Code Online (Sandbox Code Playgroud)