AND - 在SQL Server中

Mr.*_*Ken 1 sql sql-server stored-procedures

我的代码为:

Select 
    ProductId, ProductCode, Color
From 
    dbo.Product 
Where 
   @Productname = ProductName 
   and ( Color != 'Orange' or Color != 'Green') 
Run Code Online (Sandbox Code Playgroud)

结果包括颜色为"橙色","绿色"的产品:

    1   prod0001   Orange
    2   prod0002   Blue
    3   prod0003   Yellow
    4   prod0004   Green
    5   prod0005   Orange
    6   prod0006   Blue
    7   prod0007   Yellow
    8   prod0008   Green
Run Code Online (Sandbox Code Playgroud)

我希望得到颜色的产品!=绿色或!=橙色.

Gor*_*off 5

你想要的and不是or.但是,使用以下内容更容易编写not in:

Select ProductId, ProductCode, Color
From dbo.Product
Where @Productname = ProductName and 
      Color not in ('Orange', 'Green') ;
Run Code Online (Sandbox Code Playgroud)

你的逻辑是:

(color <> 'Orange') or (color <> 'Green')
Run Code Online (Sandbox Code Playgroud)

嗯,这总是如此.如果color为Orange,则第一个子句为false,但第二个为true:false或true为true.但是,not in编写和清除比仅更换or使用更简单and.