इसे रिलेशनल डिवीज़न से पूरा किया जा सकता है :
select r.order_id from (
select
dividend.*
from your_table_or_query as dividend -- assumes no duplicates in `dividend`; use `distinct` if there are any
inner join divisor
on dividend.value = divisor.value
) as r
group by r.order_id
having count(*) = (select count(*) from divisor);
परिणाम:
+----------+
| order_id |
+----------+
| 1236 |
| 1239 |
+----------+
2 rows in set (0.00 sec)
जहां आपकी क्वेरी your_table_or_query
है और
select 260 as value from dual union select 264 as value from dual
divisor
है ।
यह ऑर्डर आईडी 1236 और 1239 लौटाएगा; तब वे join
यदि आप यही चाहते हैं तो उन ऑर्डर आईडी के साथ सभी पंक्तियों को प्राप्त करने के लिए मूल क्वेरी को संपादित करें।
इंसर्ट स्टेटमेंट के साथ पूरी क्वेरी:
create table divisor (value int);
insert into divisor values (260), (264);
create table your_table_or_query (value int, order_id int);
insert into your_table_or_query values (260, 1234), (260, 1235), (260, 1236), (264, 1236), (260, 1237), (260, 1238), (260, 1239), (264, 1239), (264, 1240), (260, 1241);
select y.* from (
select r.order_id from (
select
dividend.*
from your_table_or_query as dividend
inner join divisor
on dividend.value = divisor.value
) as r
group by r.order_id
having count(*) = (select count(*) from divisor)
) as quotient
inner join your_table_or_query y
on quotient.order_id = y.order_id;
परिणाम:
+-------+----------+
| value | order_id |
+-------+----------+
| 260 | 1236 |
| 264 | 1236 |
| 260 | 1239 |
| 264 | 1239 |
+-------+----------+
4 rows in set (0.00 sec)