如果我在WHERE子句中使用以下任意一项,是否会有很大差异:
WHERE [Process Code] = 1 AND ([Material ID] = 'PLT' OR [Material ID] = 'BMI')
--or
WHERE [Process Code] = 1 AND [Material ID] IN ('PLT', 'BMI')会不会有一天我会用其中一种来代替另一种?
发布于 2011-08-09 00:31:07
在您提供的示例中,它们做的是完全相同的事情(它们将产生相同的执行计划)。但是,使用后一种语法(除了更简洁之外),您可以这样做:
WHERE [Process Code] = 1 AND [Material ID] IN (SELECT ID FROM Material WHERE Type = @type)发布于 2011-08-09 00:31:12
我想不出什么时候我会使用第一种选择。第二种选择更清晰,更有表现力。如果需要将其转换为子选择,这将更容易做到。
发布于 2011-08-09 00:35:26
IN只是一堆OR's的语法糖。IN通常更可取,因为它更易于阅读:它不会重复变量名,并且您不必考虑AND或OR中哪个具有更高的运算符优先级。
https://stackoverflow.com/questions/6985278
复制相似问题