0

2 つのテーブルが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
4

3 に答える 3

8

あなたは間違ったことを数えているので、あなたは間違った答えを得ています。

各テーブルのaとbの2つのレコードを想像してみてください。a<>bとb<>aなので、期待している0ではなく2になります。

代わりにこれを試してください

Select count(*) 
from Invitations
     left join Users                                     
     on Invitations.Email = Users.UserName
where Users.UserName is null
于 2012-11-30T10:37:33.827 に答える
3
select count(*)
from Invitation i
where not exists (select 1 from Users u where i.email = u.userName)

これは私の意見では最も簡単な方法です。イベントを読むことができます: テーブル内のすべての行を数えInvitationます where not exists テーブルの行Userswhere userNameis equal email

于 2012-11-30T10:39:10.557 に答える
3

これを試すことができます:

SELECT COUNT(*)
FROM Invitation
WHERE Email not in (
    SELECT u.username
    FROM Users
)
于 2012-11-30T10:41:03.997 に答える