存储过程SQL关联条件改写:判断字段等于两值其一的语法
解决方案
没问题,这事儿很简单,把JOIN条件里的AND换成OR就行,不过得给OR的两个条件套个括号,保证逻辑不会乱。修改后的SELECT语句应该是这样的:
SELECT expectedValue FROM dbo.ExclusionValues ev JOIN dbo.StagingData sd ON ev.ExpectedVale = sd.ProductMainType AND (ev.Exclusion1 = sd.CollateralType OR ev.Exclusion2 = sd.CollateralType)
逻辑解释
原来的条件要求sd.CollateralType同时等于ev.Exclusion1和ev.Exclusion2——这只有当Exclusion1和Exclusion2的值完全相同时才会匹配到数据,显然不是你要的效果。
换成OR之后,只要sd.CollateralType匹配ev.Exclusion1或者ev.Exclusion2中的任意一个,就能满足连接条件。加上括号是因为SQL里AND的优先级比OR高,如果不加括号,逻辑会变成:(ev.ExpectedVale = sd.ProductMainType AND ev.Exclusion1 = sd.CollateralType) OR ev.Exclusion2 = sd.CollateralType
这会导致即使ProductMainType不匹配,只要Exclusion2和CollateralType匹配就会返回结果,完全偏离你的需求。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

