我有两个表Invitations
和Users
,两个表都包含一些电子邮件。
我想计算Invitation
表中但不存在于Users
表格中的电子邮件
邀请
InvitationID Email
-------------------------------------
1 test@test.com
2 someone@example.com
3 test12@test.com
用户
UserName IsActive
-------------------------------------
test@test.com InActive
sample12@sample.com Active
test12@test.com InActive
我试过这样的
SELECT COUNT(*) FROM Invitations, Users
where Invitations.Email <> Users.UserName
我想要这样
Count=1
答案 0 :(得分:8)
你得错了答案,因为你算错了。
想象一下两张记录,每张表中的a和b。 a&lt;&gt; b和b&lt;&gt; a所以你得到2,而不是你期望的0。
试试这个
Select count(*)
from Invitations
left join Users
on Invitations.Email = Users.UserName
where Users.UserName is null
答案 1 :(得分:3)
select count(*)
from Invitation i
where not exists (select 1 from Users u where i.email = u.userName)
在我看来,这是最简单的方法,您可以事件读取它:计算Invitation
表中Users
表userName
中email
等于{{1}}中不存在行的所有行}}
答案 2 :(得分:3)
你可以尝试这个:
SELECT COUNT(*)
FROM Invitation
WHERE Email not in (
SELECT u.username
FROM Users
)