我对使用2个字段的SQL语句有疑问,其中我有否定条件,使用示例如下:

COLUMN A | COLUMN B
  TRA    |   ORIG
  TRA    |   ORIG
  TERM   |    _N
  TRA    |   ORIG
ORIG-REV1|    _N
ORIG-REV2|    _N

我正在try 获取过滤条件,其中

"COLUMN B"='_N' and "COLUMN  A" in ('ORIG-REV1','ORIG-REV2'). 

目前我正在使用该条件

"COLUMN B" <>'_N' and ("COLUMN  A" <> 'ORIG-REV1' or "COLUMN  A" <> 'ORIG-REV2')

但这个条件是过滤我的记录,其中"COLUMN A"=TERM,因为COLUMN_B值是'_N'

我需要的输出是:

COLUMN A | COLUMN B
  TRA    |   ORIG
  TRA    |   ORIG
  TERM   |    _N
  TRA    |   ORIG

我知道在Postgres中我只需要使用NOT("Column B"=‘_N’and"Column A"in(‘orig-Rev1’,‘orig-Rev2’)),不幸的是,我使用的技术非常古老和初级,甚至不存在(只有=,&lt;&gt;,&lt;,&lt;,or,IN,Like).有没有办法用另一种方法得到这个滤镜?

诚挚的问候, 保罗·塞拉

推荐答案

对不起,删除了我的 comments ,认为我犯了一个合乎逻辑的错误.都很好.

菲德尔:https://dbfiddle.uk/-hbQem22

它是SQL Server,但希望您正在使用的工具不会受到太多限制,以至于它的精神不会奏效.

仅供参考,https://en.wikipedia.org/wiki/De_Morgan%27s_laws

create table some_test_data
  (
    column_a varchar(10),
    column_b varchar(10)
  )

insert into some_test_data values ('TRA','ORIG');
insert into some_test_data values ('TRA','ORIG');
insert into some_test_data values ('TERM','_N');
insert into some_test_data values ('TRA','ORIG');
insert into some_test_data values ('ORIG-REV1','_N');
insert into some_test_data values ('ORIG-REV2','_N');

select * 
  from some_test_data
 where column_b <> '_N'
    or (
       column_a <> 'ORIG-REV1'
   and column_a <> 'ORIG-REV2'
       )

Sql相关问答推荐

如何将多个 Select 查询从一个表中组合出来

Postgresql:从jsons数组到单个id索引的json

GROUP BY和GROUP_CONCAT用于计算比赛排名

BigQuery`喜欢ANY‘和`不喜欢ANY’

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

连接特定行号

更新其组的日期字段值小于最大日期减go 天数的记录

基于唯一值在Access查询中创建计数器

使用Kotlin Exposed SQL DSL Select 多个值并排序

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

postgres中的条件索引和触发器

如何使用SQL生成数据的滚动3天总和

用另一个表中的特定名称替换 SQL 查询中的 ID.但我的两个表都有多个列

使用多个数据库调用重载 CQRS 模式

两个具有 NULL 值的表达式结果之间的差异

如何根据共同列值从两个表中包含列,但只包含左表中的行

批量更改WooCommerce中所有产品的税收状态

计数时如何为所有时间间隔返回 0 而不是什么都不返回

在多个表上递归查找

存储过程 - 动态 SQL 中不同列值的计数