Я смотрю на чужой производственный код, и меня удивляет, что предложение может привести к желаемому результату:
where C1 = 'one' and C2 not in ('apple','pear') and C3 <> 'pie'
or C1 = 'two' and C2 not in ('apple','pear')
C1 на самом деле имеет только два значения, поэтому в этом нет необходимостиукажите оба с помощью ИЛИ. Несмотря на это, я думаю, что это должно иметь круглые скобки, как это:
where (C1 = 'one' and C2 not in ('apple','pear') and C3 <> 'pie')
or (C1 = 'two' and C2 not in ('apple','pear'))
Будет ли SQL Server интерпретировать первый оператор так же, как второй оператор с круглыми скобками? Если нет, то как бы он интерпретировал первое утверждение?