我会用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之间的关系 –