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
);