请教一个数据筛选的SQL

一个表有两个列,ColA和ColB,ColA的同一个数据会对应多个ColB的值,如下:

ColAColB
O1X
O1Y
O1Z
O2X
O2X
O3X

找出ColB仅为X的ColA,上面这个示例结果就是O2和O3,O1则不行,因为O1对应的ColB虽然有X,但是也有Y和Z.

select * from 表
where cola!=
(
select distinct(cola) from 表
where colb!='x')
-- 目的查出有其他值的cola列

select colA from tablename where colb='X'
sql语句中,关键字、表名、列名不区分大小写,数据区分大小写

img

img

强制的写了,应该还是有问题,提供一种思路吧

mysql 的话

select colA  from (select colA , GROUP_CONCAT( distinct colB SEPARATOR ',' ) as data  from csdn_test   group by colA) a where data='x'

hive的话
select colA  from (select colA ,  collect_set(colB) as data  from csdn_test   group by colA ) a where data regexp 'x' and size(data) =1