Postgresql

如何根據我的情況獲得單行

  • July 16, 2021

我的使用者表中有以下行

在此處輸入圖像描述

現在我想讓使用者擁有所有訪問類型作為查看、編輯和共享。所以我需要從中得到兩行

在此處輸入圖像描述

如何使用 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

引用自:https://dba.stackexchange.com/questions/295754