Sql 选择相关记录的位置';s值没有出现

Sql 选择相关记录的位置';s值没有出现,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有一个客户端表和一个设备表 客户端可以有多个设备,并且客户端与设备一样处于活动状态 我想要所有处于活动状态但没有活动设备的客户端 对于所有活动客户端,我将客户端上的设备进行了内部连接,因此客户端会出现多次,但现在我不知道如何选择所有没有活动设备的客户端 这就是我建立关系的方式: 客户端: pkClientID Name IsActive ------------------------------ 1 Jake 1 2 Phili

我有一个
客户端
表和一个
设备

客户端可以有多个设备,并且客户端与设备一样处于活动状态

我想要所有处于活动状态但没有活动设备的客户端

对于所有活动客户端,我将客户端上的设备进行了内部连接,因此客户端会出现多次,但现在我不知道如何选择所有没有活动设备的客户端

这就是我建立关系的方式:

客户端

pkClientID   Name     IsActive
------------------------------
1            Jake     1
2            Philip   1
设备

pkDeviceID  fkClientID  DeviceName  IsActive
---------------------------------------------
1           1           Samsung     1
2           1           Apple       0
3           2           Samsung     0
4           2           Sony        0
既然我已经有了所有的活动客户端,我如何只选择Philip,因为他是活动的,但没有活动设备?

使用:

rextester演示:

返回:

+------------+--------+----------+
| pkClientid |  Name  | IsActive |
+------------+--------+----------+
|          2 | Philip |        1 |
+------------+--------+----------+

使用
不在
不存在
左连接
/
其中

select c.*
from client c
where c.IsActive = 1 and
      not exists (select 1
                  from devices d
                  where d.fkClientID = c.ClientID and d.IsActive = 1
                 );
select c.*
from client c
where c.IsActive = 1 and
      not exists (select 1
                  from devices d
                  where d.fkClientID = c.ClientID and d.IsActive = 1
                 );