有什么方法可以使用 PostgreSQL 查询获取拥有超过 2 本书的所有者 ID?

Is there any way to get owner ids who have more than 2 books using PostgreSQL query?

librariestable中,有owner_idbook_id

每个owner只能有一个book。 例如,

  id|owner_id|book_id
  3 |  2     | 1
  5 |  2     | 1

但现在有些业主拥有超过2本书。

  id|owner_id|book_id
  9 |  5     | 1
  11|  5     | 2

有什么方法可以使用 PostgreSQL 查询[=28] 来获取拥有超过 2 本书 所有者 ID =]?

您可以将聚合和过滤器与 having 子句一起使用:

select owner_id from librarires group by owner_id having count(*) > 1

这假设 (book_id, owner_id) 元组在 table 中是唯一的。如果可能会发生重复,并且您只想计算每个所有者的不同书籍,则:

select owner_id from librarires group by owner_id having count(distinct book_id) > 1