查找整个组的列值为“ P”的行

时间:2019-01-03 20:05:45

标签: mysql sql

我有“ Camera”表,我需要查找仅使用Camera_mode'P'且没有其他模式的摄像机。

表结构

Cam_serial_no     Camera_mode

abc123             P
abc123             B
abc123             V
pqr111             P
xyz101             P
xyz101             V
xyz101             B

我可以使用下面的查询获得所需的输出,但是我想知道是否有任何简单的方法

select * 
from (select Cam_serial_no, collect_set(camera_mode) as val 
      from camera 
      group by Cam_serial_no
) a 
where size(val)=1 and val[0] = 'P';

所需的输出是

pqr111             P

1 个答案:

答案 0 :(得分:2)

Cam_serial_no分组,仅采用除P之外没有其他模式的那些

select Cam_serial_no
from camera
group by Cam_serial_no
having sum(Camera_mode <> 'P') = 0