一个表有两个列,ColA和ColB,ColA的同一个数据会对应多个ColB的值,如下:
ColA | ColB |
---|---|
O1 | X |
O1 | Y |
O1 | Z |
O2 | X |
O2 | X |
O3 | X |
找出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语句中,关键字、表名、列名不区分大小写,数据区分大小写
强制的写了,应该还是有问题,提供一种思路吧
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