SQL选择不查看正确的数据

时间:2018-07-14 20:47:58

标签: sql select

我以前一直在使用MySQL,通过选择查询可以得到正确的响应。

SELECT * 
FROM TABLE 
WHERE COLUMN1 NOT IN ('Done', 'Closed') 
  AND COLUMN2 IN ('Dude1', 'Dude2', 'Dude3')

现在,我们已将db更改为oracle,如果COLUMN1中没有任何值,它将保留。换句话说,它为空/空。

我尝试了我认为是进行查询的正确方法,但是它的行为不如我希望的那样。也许有人有一个解决方案,我可以检索与MySQL中相同的信息。

最后一次尝试以这个查询结束

 SELECT * 
 FROM TABLE 
 WHERE COLUMN1 NOT IN ('Done', 'Closed') 
    OR COLUMN1 IS NULL 
   AND COLUMN2 IN ('Dude1', 'Dude2', 'Dude3')

当我运行此查询时,我得到了所有在COLUMN1中具有空值/空值的值,但是从答复中我也得到了COLUMN2中的Dude6值,而且我不知道该怎么做。

如果我删除

OR Column1 IS NULL

我不会得到神秘的Dude6作为响应,但是我也不会得到column1为空/空且其中包含Dude1的行。

1 个答案:

答案 0 :(得分:1)

您只需要在OR表达式两边加上括号:

SELECT * 
FROM TABLE 
WHERE 
  (COLUMN1 NOT IN ('Done','Closed') OR COLUMN1 IS NULL)
  AND COLUMN2 IN ('Dude1','Dude2','Dude3')