sql - SQL 选择未查看正确的数据
问题描述
我之前一直在使用 MySQL,我可以通过这个 select 查询得到正确的响应。
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 中得到了所有具有 null/empty 作为值的值,但我也从回复中得到了 COLUMN2 中的 Dude6 ......而且我不知道如何以其他方式做到这一点......
如果我删除
OR Column1 IS NULL
我不会得到神秘的 Dude6 作为响应,但我也不会得到 column1 为空/null 并且其中包含 Dude1 的行。
解决方案
您只需要在OR
表达式周围加上括号:
SELECT *
FROM TABLE
WHERE
(COLUMN1 NOT IN ('Done','Closed') OR COLUMN1 IS NULL)
AND COLUMN2 IN ('Dude1','Dude2','Dude3')
推荐阅读
- php - 当我尝试使用可编辑选项更新数据时出现 configureListFields 问题
- android - 如何在状态栏通知中使用 clone()?我可以克隆传入的通知吗?
- c++ - 启动使用 CreatEvent 停止的进程
- ckan - 文件上传后,cloudstorage 扩展会生成 URL 吗?
- typescript - 如何在 Typescript 的条件之外使用“Promise.then =>”
- java - Elasticsearch java 高级休息客户端的 SearchResponse 带来了一组空值作为结果
- java - 在无序集合中使用断言
- python - 如何使用 Python 向后读取文件中的每一行
- android - 如何提取图像的深度图
- html - 用git做html页面的版本控制对吗