比较SQL中的3个表,结果在A、B、而不是C中找到
我试图从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
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。太好了,谢谢你,埃斯特班,太好了!