我有一個簡單的SQL關係模型,具有多對多的關係。下面是成分表如何在構圖表上交集
___________________________ | object1_id | object2_id | |---------------------------|
我想知道所有的object1
是常見的一組object2
。我的基本感覺就是做這樣的
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_1>
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_2>
請求,如果我有N個對象2中集,我會做ňINTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_1>
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_2>
...
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_N>
但是,它看起來不是很優化。你可以幫我嗎 ?我不是一個真正的SQL專家。我想我可以使用JOIN來做到這一點。
樣品
___________________________ | object1_id | object2_id | |---------------------------| | 10 | 1 | | 11 | 1 | | 10 | 2 | | 12 | 2 | | 10 | 3 | | 11 | 3 | | 13 | 3 |
例
- {
object2_id
組} => {預期object1_id
} - {1,2} => {10}
- { 1,3} => {10,11}
- {1,2,3} => {10}
謝謝你幫助我很多。你的查詢是真正優化我想做什麼的,因爲我的查詢複雜度是什麼O(N),現在是O(1)(因爲我將遠遠超過2個對象相交)。再次感謝您 – 2012-03-20 09:18:16