Sql server 2008 SQL-获取匹配项,其中匹配项为NULL或参数为一对多

Sql server 2008 SQL-获取匹配项,其中匹配项为NULL或参数为一对多,sql-server-2008,Sql Server 2008,表格规则: RuleID RuleName 1 Rule1 2 Rule2 3 Rule3 4 Rule4 规则ID规则名 1规则1 2规则2 3规则3 4规则4 表设备: EquipmentID EquipmentName EquipmentCode 1 Equip1 E1 2 Equip2 E2 3

表格规则:

RuleID RuleName 1 Rule1 2 Rule2 3 Rule3 4 Rule4 规则ID规则名 1规则1 2规则2 3规则3 4规则4 表设备:

EquipmentID EquipmentName EquipmentCode 1 Equip1 E1 2 Equip2 E2 3 Equip3 E3 EquipmentRuleID RuleID EquipmentID 1 1 1 2 1 2 3 2 1 4 2 3 5 3 2 设备ID设备名称设备代码 1设备1 E1 2.2 E2 3设备3 E3 表2设备:

EquipmentID EquipmentName EquipmentCode 1 Equip1 E1 2 Equip2 E2 3 Equip3 E3 EquipmentRuleID RuleID EquipmentID 1 1 1 2 1 2 3 2 1 4 2 3 5 3 2 设备规则ID规则ID设备ID 1 1 1 2 1 2 3 2 1 4 2 3 5 3 2 用户将仅使用一个设备代码进行查询。我想返回没有相关设备或具有匹配设备的规则

因此,如果用户查询E1,结果集应该是

RuleID RuleName 1 Rule1 2 Rule2 4 Rule4 规则ID规则名 1规则1 2规则2 4规则4 我不能指出这件事的WHERE子句。有什么建议吗

SELECT * FROM Rule 
WHERE Rule.ID NOT IN (SELECT RuleID FROM RuleEquipment)
OR Rule.ID IN 
(
   SELECT RuleID 
   FROM RuleEquipment 
      INNER JOIN Equipment ON RuleEquipment.EquipmentID = Equipment.EquipmentID
   WHERE Equipment.EquipmentCode = @inputEquipmentCode
)