我有两张表,如图所示。我想在postgresql中创建一个SQL查询,以获得表1中每个唯一'pkey'的pkey
和最小count
,其中'name1'不在表'name'列中的数组中2。
'name'是一个数组
答案 0 :(得分:1)
您可以使用ANY检查名称数组中是否存在一个元素。
create table t1 (pkey int, cnt int); create table t2 (pkey int, name text[]); insert into t1 values (1, 11),(1, 9),(2, 14),(2, 15),(3, 21),(3,16); insert into t2 values (1, array['name1','name2']), (1, array['name3','name2']), (2, array['name4','name1']), (2, array['name5','name2']), (3, array['name2','name3']), (3, array['name4','name5']);
select pkey from t2 where 'name1' = any(name);
| pkey | | ---: | | 1 | | 2 |
select t1.pkey, min(cnt) count from t1 where not exists (select 1 from t2 where t2.pkey = t1.pkey and 'name1' = any(name)) group by t1.pkey;
pkey | count ---: | ----: 3 | 16
dbfiddle here