如何在sql server中忽略where条件结果并选择剩余结果

kcugc4gi  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(341)

我有一张有17张唱片的table。我通过where条件选择行,如下面的查询:

SELECT * FROM T1 WHERE (c1='AA' and c3=13)

2条记录是此查询的结果。现在我要选择表t1的15条记录!!!我加上 not 运算符在where条件之前,例如:

SELECT * FROM T1 WHERE not (c1='AA' and c3=13)

14条记录是这个查询的结果。但是这个表有17条记录,不能使用 EXCEPT 子句,因为此子句只选择不同的记录。

zvms9eto

zvms9eto1#

SELECT * FROM t1
               WHERE PrimaryKey_Col not in (
                 SELECT PrimaryKey_Col FROM t1 WHERE t.c1='AA' and t.c3=13
                                           );

注意:这个查询很容易基于primarykey工作

w6lpcovy

w6lpcovy2#

如果id重复,则使用row\ u number()函数。

SELECT T1.* FROM T1 
          LEFT JOIN (SELECT * FROM T1 WHERE (c1='AA' AND c3=13)) AS T2 
            ON(T1.ID=T2.ID) WHERE T2.ID IS NULL;
vecaoik1

vecaoik13#

请像这样试试,除了条款

SELECT DISTINCT * FROM 
(
    SELECT * FROM T1
    EXCEPT
    SELECT * FROM T1 WHERE (c1='AA' and c3=13)
)k
t40tm48m

t40tm48m4#

如果我使用 EXISTS ?? 对于sql server

select * from t1 t
where not exists(
         select * from t1 where (t.c1='AA' and t.c3=13)
)

相关问题