我會用EXISTS
子查詢:
SELECT * FROM SomeTable
WHERE EXISTS (SELECT * FROM Table2 WHERE Table2_Id = 1 AND OptionId = 2)
AND EXISTS (SELECT * FROM Table2 WHERE Table2_Id = 1 AND OptionId = 3)
如果您有以下指標(Table2_Id,OptionId)
的一個或(OptionId,Table2_Id)
那麼你不應該有關於業績的擔憂。
編輯1:閱讀上述評論後,我想你應該加入某種方式SomeTable
與Table2
使用公共列這樣的:
SELECT * FROM SomeTable x
WHERE EXISTS (SELECT * FROM Table2 y WHERE y.Table2_Id = 1 AND y.OptionId = 2 AND x.CommonColumn = y.CommonColumn)
AND EXISTS (SELECT * FROM Table2 y WHERE y.Table2_Id = 1 AND y.OptionId = 3 AND x.CommonColumn = y.CommonColumn)
如果這沒有解決您的問題,那麼你應該增加更多的相關信息。
您的查詢將eather返回沒有行或所有行。也許你應該描述你需要的什麼 –
假設我有一個可以有一些選項的實體,我想獲得至少有指定選項的實體(在這個示例2和3中)。 – mrtaikandi
無論您放入哪個數字來替換2和3.您將從Sometable中獲取所有行或無行。我相信你需要一個不同的結果。描述你需要什麼以及SomeTable和Table2之間的關係 –