如题..这里是一个关系表, 想筛选出来唯一的值..
如何筛选出来具有cat同时又具有bid的唯一的username
如果是PostgreSQL可以使用窗口查询来解决这个问题:
digoal=# drop table tbl;;
DROP TABLE
digoal=#
digoal=# create table tbl(username text, store text, item text, value int);
CREATE TABLE
digoal=# insert into tbl values ('kaixin','lease','bid',1);
INSERT 0 1
digoal=# insert into tbl values ('kaixin','lease','bid',2);
INSERT 0 1
digoal=# insert into tbl values ('kaixin','lease','bid',3);
INSERT 0 1
digoal=# insert into tbl values ('kaixin','lease','cat',3);
INSERT 0 1
digoal=# insert into tbl values ('kaixin','lease','cat',4);
INSERT 0 1
digoal=# insert into tbl values ('kaixin','lease','cat',5);
INSERT 0 1
digoal=# insert into tbl values ('kaixin123','lease','cat',6);
INSERT 0 1
digoal=# select * from tbl;
username | store | item | value
-----------+-------+------+-------
kaixin | lease | bid | 1
kaixin | lease | bid | 2
kaixin | lease | bid | 3
kaixin | lease | cat | 3
kaixin | lease | cat | 4
kaixin | lease | cat | 5
kaixin123 | lease | cat | 6
(7 rows)
digoal=# select distinct username from (select array_agg(item) over(partition by username) arr,username from tbl) t where arr @> array['bid','cat'];
username
----------
kaixin
(1 row)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。