Postgresql
如何根據我的情況獲得單行
我的使用者表中有以下行
現在我想讓使用者擁有所有訪問類型作為查看、編輯和共享。所以我需要從中得到兩行
如何使用 postgresql 語句實現這一點。
要獲取恰好具有這三種訪問類型的行,可以將它們聚合到一個數組中:
select id, name, age from the_table group by id, name, age having array_agg(accesstype order by accesstype) = array['edit', 'share', 'view']
請注意,
array[...]
表達式中元素的順序對=
使用的運算符很重要,因為array['a', 'b']
不等於array['b', 'a']
。或者,您可以使用
bool_and()
select id, name, age from the_table group by id, name, age having bool_and(accesstype in ('edit', 'share', 'view')) and count(distinct accesstype) = 3