CREATE TABLE ORDERS ( ORDER_ID CHAR(8) NOT NULL PRIMARY KEY ); INSERT INTO ORDERS (ORDER_ID) VALUES ('A'), ('B'), ('C'); CREATE TABLE SUBORDERS1 ( ORDER_ID CHAR(8) NOT NULL REFERENCES ORDERS(ORDER_ID), SUBORDER_ID CHAR(8) NOT NULL, CONSTRAINT PK PRIMARY KEY (ORDER_ID, SUBORDER_ID) ); CREATE TABLE SUBORDERS2 ( ORDER_ID CHAR(8) NOT NULL REFERENCES ORDERS(ORDER_ID), SUBORDER_ID CHAR(8) NOT NULL, CONSTRAINT PK PRIMARY KEY (ORDER_ID, SUBORDER_ID) ); INSERT INTO SUBORDERS1 (ORDER_ID, SUBORDER_ID) VALUES ('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('B', '2'); INSERT INTO SUBORDERS2 (ORDER_ID, SUBORDER_ID) VALUES ('A', '1'), ('A', '2'), ('A', '3'), ('B', '1'), ('C', '1'), ('C', '2'); WITH Q1 AS ( SELECT O.ORDER_ID, COUNT(*) AS COUNT FROM ORDERS O INNER JOIN SUBORDERS1 SO ON O.ORDER_ID = SO.ORDER_ID GROUP BY O.ORDER_ID ), Q2 AS ( SELECT O.ORDER_ID, COUNT(*) AS COUNT FROM ORDERS O INNER JOIN SUBORDERS2 SO ON O.ORDER_ID = SO.ORDER_ID GROUP BY O.ORDER_ID ) SELECT Q1.ORDER_ID FROM Q1 INNER JOIN Q2 ON Q1.ORDER_ID = Q2.ORDER_ID AND Q1.COUNT = Q2.COUNT; SELECT Q1.ORDER_ID FROM ( SELECT O.ORDER_ID, COUNT(*) AS COUNT FROM ORDERS O INNER JOIN SUBORDERS1 SO ON O.ORDER_ID = SO.ORDER_ID GROUP BY O.ORDER_ID ) AS Q1 INNER JOIN ( SELECT O.ORDER_ID, COUNT(*) AS COUNT FROM ORDERS O INNER JOIN SUBORDERS2 SO ON O.ORDER_ID = SO.ORDER_ID GROUP BY O.ORDER_ID ) AS Q2 ON Q1.ORDER_ID = Q2.ORDER_ID AND Q1.COUNT = Q2.COUNT;