SQL - 出现在特定类别的所有存储桶中的项目

SQL - item that appears in all buckets in Certain Category

我有这个table(table name CH);

╔══════╦══════╦══════════╦══════════╗
║ ID_A ║ ID_B ║Category_A║Category_B║
╠══════╬══════╬══════════╬══════════╣
║   1  ║   1  ║    1     ║     5    ║
║   1  ║   2  ║    1     ║     5    ║
║   1  ║   3  ║    1     ║     5    ║
║   1  ║   1  ║    2     ║     5    ║
║   1  ║   3  ║    2     ║     5    ║
║   1  ║   1  ║    3     ║     5    ║
║   1  ║   2  ║    3     ║     5    ║
║   2  ║   1  ║    1     ║     4    ║
║   2  ║   2  ║    1     ║     3    ║
║   2  ║   2  ║    2     ║     2    ║
║   2  ║   2  ║    3     ║     1    ║
╚══════╩══════╩══════════╩══════════╝

ID_A = 1 & ID_B = 1全部出现在Category_A(=1,2,3) 并且 ID_A = 2 & ID_B = 2 全部出现在 Category_A(=1,2,3)

有没有 select 那些类型的行? 我试过 select distinct 或 count distinct with condition 但失败了。

select * from ch group by ID_A, ID_B having count(ditinct Category_A)=4; 

我希望 table 像这样;

╔══════╦══════╦══════════╦══════════╗
║ ID_A ║ ID_B ║Category_A║Category_B║
╠══════╬══════╬══════════╬══════════╣
║   1  ║   1  ║    1     ║     5    ║
║   1  ║   1  ║    2     ║     5    ║
║   1  ║   1  ║    3     ║     5    ║
║   2  ║   2  ║    1     ║     3    ║
║   2  ║   2  ║    2     ║     2    ║
║   2  ║   2  ║    3     ║     1    ║
╚══════╩══════╩══════════╩══════════╝

这可能有效

SELECT *
FROM (
  SELECT ID_A, ID_B, COUNT(DISTINCT Category_A) as COUNT_CAT_A
  FROM CH
  GROUP BY ID_A, ID_B 
) X
WHERE COUNT_CAT_A = 3