比较SQL中的3个表,结果在A、B、而不是C中找到

比较SQL中的3个表,结果在A、B、而不是C中找到,sql,join,resultset,Sql,Join,Resultset,我试图从3个表中获得结果,但要显示反映 来自A的用户也在B中,但不在C中 Table A = Table B not in Table C ------- -------- -------- UserName UserName UserName 如果这太简单,我道歉。我在这方面是新手,从谷歌搜索的东西中找不到任何东西 有两种方法可以做到这一点,一种是使用左连接: Select * From Table

我试图从3个表中获得结果,但要显示反映 来自A的用户也在B中,但不在C中

Table A   =   Table B  not in   Table C
-------      --------          --------
UserName     UserName           UserName

如果这太简单,我道歉。我在这方面是新手,从谷歌搜索的东西中找不到任何东西

有两种方法可以做到这一点,一种是使用
左连接

Select      *
From        TableA  A
Join        TableB  B   On  A.UserName = B.UserName
Left Join   TableC  C   On  A.UserName = C.UserName
Where       C.UserName Is Null;
另一种方法是在不存在的地方使用

Select      *
From        TableA  A
Join        TableB  B   On  A.UserName = B.UserName
Where Not Exists
(
    Select  *
    From    TableC  C
    Where   C.UserName = A.UserName
)

子选择解决方案:

您可以使用两个子选项对它们进行绘图,其中
中,而
不在
中,如:

SELECT T1.UserName
  FROM Table1 T1
 WHERE T1.UserName     IN (SELECT UserName FROM Table2)
   AND T1.UserName NOT IN (SELECT UserName FROM Table3)
     SELECT DISTINCT T1.UserName
       FROM Table1 T1
 INNER JOIN Table2 T2
         ON T1.UserName = T2.UserName
 LEFT OUTER JOIN Table3 T3
         ON T1.UserName = T3.UserName
      WHERE T3.UserName IS NULL
加入解决方案:

或者您可以使用
连接
如下:

SELECT T1.UserName
  FROM Table1 T1
 WHERE T1.UserName     IN (SELECT UserName FROM Table2)
   AND T1.UserName NOT IN (SELECT UserName FROM Table3)
     SELECT DISTINCT T1.UserName
       FROM Table1 T1
 INNER JOIN Table2 T2
         ON T1.UserName = T2.UserName
 LEFT OUTER JOIN Table3 T3
         ON T1.UserName = T3.UserName
      WHERE T3.UserName IS NULL
存在解决方案:

如果您希望
存在
,您可以这样做:

SELECT T1.UserName
  FROM Table1 T1
 WHERE     EXISTS (SELECT 1 FROM Table2 T2 
                           WHERE T1.UserName = T2.UserName)
   AND NOT EXISTS (SELECT 1 FROM Table3 T3 
                           WHERE T1.UserName = T3.UserName)

你能提供更多信息来澄清你的问题吗?你使用的是哪种RDBMS?嗨,Esteban,我使用的是Microsoft SQL Server(2014)。虽然我比你领先了2秒,但我会感到骄傲,因为你的答案更可靠+1谢谢Siyual。太好了,谢谢你,埃斯特班,太好了!