棘手的WHERE条件条款

时间:2017-06-13 17:00:15

标签: sql sql-server tsql where

我陷入了一种似乎很容易的困境,但我无法将其置于TSQL中。

我们说我有这张表

Service     Master
LOCAL       BRGIL
EREPO       CROMST
NICLI       CROMST
EXPORT      NIGIL

我需要忽略Master中他们有价值的所有记录' CROMST'除非服务'是EREPO

到目前为止我已经尝试了

WHERE (Master <> 'CROMST' AND ([Service] <> 'EREPO'))

这只显示

Service     Master
LOCAL       BRGIL
EXPORT      NIGIL

我也试过这个

WHERE (Master <> 'CROMST' AND (rtrim([Service])+rtrim(Master) <> 'EREPOCROMST'))

但仍然没有运气。

我知道这应该很容易,但我被封锁了

我看的结果是

Service     Master
LOCAL       BRGIL
EREPO       CROMST
EXPORT      NIGIL

5 个答案:

答案 0 :(得分:2)

使用:

where master <> 'CROMST' or Service = 'EREPO'

评估可能的情况:

  • 场景:主人=&#39; CROMST&#39 ;;服务=&#39; EREPO&#39;
    • false true
  • 场景:掌握!=&#39; CROMST&#39 ;;服务=&#39; EREPO&#39;
    • true true
  • 场景:主人=&#39; CROMST&#39 ;;服务!=&#39; EREPO&#39;
    • false false
  • 场景:掌握!=&#39; CROMST&#39 ;;服务!=&#39; EREPO&#39;
    • true false

答案 1 :(得分:1)

SELECT * FROM 
your_table
WHERE (Key2 != 'CROMST' OR Key1 = 'EREPO' )

将是我的方法

答案 2 :(得分:1)

使用案例功能:

DECLARE @myTable AS TABLE
    (
        [SERVICE] VARCHAR(8) ,
        [Master] VARCHAR(8)
    );


INSERT INTO @myTable (   [SERVICE] ,
                         [Master]
                     )
VALUES ( 'LOCAL', 'BRGIL' ) ,
    ( 'EREPO', 'CROMST' ) ,
    ( 'NICLI', 'CROMST' ) ,
    ( 'EXPORT', 'NIGIL' );

    SELECT * FROM @myTable;

    SELECT *
    FROM @myTable
    WHERE 1 =   CASE WHEN ([MASTER] = 'CROMST') 
                    THEN
                        CASE WHEN ([SERVICE] = 'EREPO') 
                            THEN 1 -- special exception
                            ELSE 0 --disregard all others
                        END
                    ELSE 1 -- keep
                END 

答案 3 :(得分:0)

尝试:

WHERE Master <> 'CROMST'
  OR (([Service] = 'EREPO') AND (Master = 'CROMST'))

答案 4 :(得分:0)

选择* 来自your_table a 哪里不存在(从your_table b中选择*,其中b.Master =&#39; CROMST&#39; 和b.Service&lt;&gt; &#39; EREPO&#39)

子查询查询Master具有值&#39; CROMST&#39;但是服务&#39;价值不是&#39; EREPO&#39;。

&#34;不存在&#34;过滤掉子查询结果。