这是 您 应该提供的测试用例:
CREATE TABLE partner ( partner_id serial PRIMARY KEY, partner text);INSERT INTO partner (partner) VALUES ('partner1'), ('partner2'), ('partner3'), ('partner4'); CREATE TABLE category ( category_id serial PRIMARY KEY, category text);INSERT INTO category (category) VALUES ('categ1') ,('categ2') ,('business') ,('retail');CREATE TABLE partner_category ( partner_id int REFERENCES partner(partner_id), category_id int REFERENCES category(category_id), ConSTRAINT cat_pk PRIMARY KEY (partner_id, category_id));INSERT INTO partner_category (partner_id, category_id) VALUES (1,1), (1,2), (1,3) ,(2,4) ,(3,3), (3,4) ,(4,1), (4,2);这是您要 查询的查询 ( 许多 可能的变体之一):
SELECt p.*FROM partner pWHERe EXISTS (SELECt * FROM partner_category pc WHERe pc.partner_id = p.partner_id AND pc.category_id = 3)OR EXISTS (SELECt * FROM partner_category pc WHERe pc.partner_id = p.partner_id AND pc.category_id = 4)ORDER BY p.partner_id;
SQL提琴。
这里的关键词是 关系划分 。我们在这个相关问题下集合了一个完整的查询库来处理此类问题:
- 如何筛选具有多次通过关系的SQL结果



