Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要获取Oracle中字段集的否定_Sql_Oracle - Fatal编程技术网

Sql 需要获取Oracle中字段集的否定

Sql 需要获取Oracle中字段集的否定,sql,oracle,Sql,Oracle,我试图一次得到多个字段的否定,下面是我写的 orig_code send_id ref_no ABCD001 ABCD001 35RE777 ABCDXXX ABCDXXX 35RE156 ABCD001 ABCD001 20PS789 ABCDXXX ABCDXXX 20PS453 ABCD001 ABCD001 30RE745 ABCDXXX ABCDXXX 55RE741 DBWS001 ABCD001 25PS369 MNKSXXX ABCDXXX 21P

我试图一次得到多个字段的否定,下面是我写的

orig_code send_id ref_no
ABCD001   ABCD001 35RE777
ABCDXXX   ABCDXXX 35RE156
ABCD001   ABCD001 20PS789
ABCDXXX   ABCDXXX 20PS453
ABCD001   ABCD001 30RE745
ABCDXXX   ABCDXXX 55RE741
DBWS001   ABCD001 25PS369
MNKSXXX   ABCDXXX 21PS258
ABCD001   ABCD001 25PS369
ABCDXXX   ABCDXXX 21PS258

SELECT *
FROM T1
WHERE
((orig_code, send_id) NOT IN
                         ( ('ABCD001', 'ABCD001'),
                          ('ABCDXXX', 'ABCDXXX'))
AND (ref_no NOT LIKE '35RE%' OR ref_no NOT LIKE '20PS%'))
我编写的查询没有删除上表中的内容。请让我知道我在哪里犯的错误

我正在寻找的结果如下。可能有多种参考格式,我只包括了少数。我只需要删除那些以35RE或20PS开头的代码,同时满足orig_代码和send_id字段值

ABCD001   ABCD001 30RE745
ABCDXXX   ABCDXXX 55RE741
DBWS001   ABCD001 25PS369
MNKSXXX   ABCDXXX 21PS258
ABCD001   ABCD001 25PS369
ABCDXXX   ABCDXXX 21PS258
谢谢你的帮助

Oracle 11g R2架构设置:

问题1:

查询2或使用NOTA和NOTB=非A或B以及NOTA或NOTB=非A和B:

:


根据您最近的示例,这就足够了:

SELECT *
FROM T1
WHERE ref_no NOT LIKE '35RE%'
  and ref_no NOT LIKE '20PS%'
使用您的数据:

with T1(orig_code, send_id, ref_no) as (
    select 'ABCD001', 'ABCD001', '35RE777' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '35RE156' from dual union all
    select 'ABCD001', 'ABCD001', '20PS789' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '20PS453' from dual union all
    select 'ABCD001', 'ABCD001', '30RE745' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '55RE741' from dual union all
    select 'DBWS001', 'ABCD001', '25PS369' from dual union all
    select 'MNKSXXX', 'ABCDXXX', '21PS258' from dual union all
    select 'ABCD001', 'ABCD001', '25PS369' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '21PS258' from dual
)
SELECT *
FROM T1
WHERE ref_no NOT LIKE '35RE%'
  and ref_no NOT LIKE '20PS%'

ORIG_CODE SEND_ID REF_NO 
--------- ------- -------
ABCD001   ABCD001 30RE745
ABCDXXX   ABCDXXX 55RE741
DBWS001   ABCD001 25PS369
MNKSXXX   ABCDXXX 21PS258
ABCD001   ABCD001 25PS369
ABCDXXX   ABCDXXX 21PS258

如果对该数据运行带有WHERE条件的查询,则不会得到任何数据。你会期望什么呢?我没有复制粘贴所有的查询内容。只是其中的一部分。我有select、from和where子句:。无论如何,我已经更新了这个问题。这已经足够清楚了。我的问题是:你的预期结果是什么?我已经更新了表格和预期结果。希望能有帮助。谢谢MT0,这解决了我的问题。我现在正在处理总查询。希望这之后一切都会好起来。再次感谢。
SELECT *
FROM   t1
WHERE  NOT (
         (orig_code, send_id) IN (
           ('ABCD001', 'ABCD001'),
           ('ABCDXXX', 'ABCDXXX')
         )
         AND (
             ref_no LIKE '35RE%'
         OR ref_no LIKE '20PS%'
         )
       )
| ORIG_CODE | SEND_ID |  REF_NO |
|-----------|---------|---------|
|   ABCDXXX | ABCDXXX | 25PS453 |
|   ABCD001 | ABCD001 | 30RE745 |
|   ABCDXXX | ABCDXXX | 55RE741 |
|   ABCD001 | ABCD001 | 25PS369 |
|   ABCDXXX | ABCDXXX | 21PS258 |
SELECT *
FROM T1
WHERE ref_no NOT LIKE '35RE%'
  and ref_no NOT LIKE '20PS%'
with T1(orig_code, send_id, ref_no) as (
    select 'ABCD001', 'ABCD001', '35RE777' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '35RE156' from dual union all
    select 'ABCD001', 'ABCD001', '20PS789' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '20PS453' from dual union all
    select 'ABCD001', 'ABCD001', '30RE745' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '55RE741' from dual union all
    select 'DBWS001', 'ABCD001', '25PS369' from dual union all
    select 'MNKSXXX', 'ABCDXXX', '21PS258' from dual union all
    select 'ABCD001', 'ABCD001', '25PS369' from dual union all
    select 'ABCDXXX', 'ABCDXXX', '21PS258' from dual
)
SELECT *
FROM T1
WHERE ref_no NOT LIKE '35RE%'
  and ref_no NOT LIKE '20PS%'

ORIG_CODE SEND_ID REF_NO 
--------- ------- -------
ABCD001   ABCD001 30RE745
ABCDXXX   ABCDXXX 55RE741
DBWS001   ABCD001 25PS369
MNKSXXX   ABCDXXX 21PS258
ABCD001   ABCD001 25PS369
ABCDXXX   ABCDXXX 21PS258