我有3代表工作具有下列名称和列:SQL JOIN没有返回值
*Table 1*
**Users**
UserID UserName UserTypeNumber
1 John 1N
2 Mary 1N
3 Doe 1N
4 Sullivan 2N
5 Sally 1N
**Key = UserID**
*Table 2*
**MobileUsers**
Userid MobileAccess
1 Yes
2 Yes
3 Yes
4 Yes
5 No
**Key = UserID**
*Table 3*
**PanCards**
UserID CARD_NUMBER
3 2222
4 3333
5 1111
键=用户名
说明:
- 每个用户可在均为用户和移动用户表 H不过,并非所有用户都在PanCards表中。这是 ,因为只有已分配卡的用户出现在 PanCards表中。在这种情况下Doe的用户id = 3和沙利文与用户名= 4有一个卡,因此,他们出现在PanCards表
问题:
- 我想实现的是过滤掉 移动用户用户表移动接入相当于是和他们UserTypeNumber等效于1N在Users表中但不存在于PanCards表中。
我至今是低于SQL查询:
SELECT MobileUsers.Userid, MobileUsers.MobileAccess
FROM MobileUsers
INNER JOIN Users
ON MobileUsers.Userid = Users.UserID
INNER JOIN PanCards
ON Users.UserID = PanCards.UserID
WHERE MobileUsers.MobileAccess = 'Yes'
AND
Users.UserTypeID = '1N'
AND
MobileUsers.Userid NOT IN
(SELECT PanCards.UserID FROM PanCards)
结果是一个空表
Userid MobileAccess
但是我想要的是具有如下的结果返回:
Userid MobileAccess
1 Yes
2 Yes
我如何解决这个问题,并得到正确的结果?
您正在与PanCards进行INNER JOIN,这意味着该表中必须有一行。删除加入 –