sql - SQL 选择基于另一列的过滤列
问题描述
我有一些数据,例如:
值 | chr1 | chr2 |
---|---|---|
1 | 一个 | x1 |
2 | 一个 | y2 |
3 | 一个 | z3 |
4 | b | x1 |
5 | b | y2 |
6 | b | z3 |
我想选择数据,以便在结果中如果 chr1 = 'a' 那么 chr2 只有 x1,否则不要过滤 chr2 即:
值 | chr1 | chr2 |
---|---|---|
1 | 一个 | x1 |
4 | b | x1 |
5 | b | y2 |
6 | b | z3 |
由于我被迫使用的平台,我受到限制,我只能在 Redshift 上使用查询的 WHERE 条件进行过滤。
解决方案
您可以使用以下逻辑:
SELECT *
FROM yourTable
WHERE chr1 <> 'a' OR chr2 = 'x1';
因此,列入白名单的记录是不具有的记录chr1 = 'a'
,或者是具有此值但也具有的记录chr2 = 'x1'
。
推荐阅读
- npm - 通过 npm 脚本递归地跨平台复制文件
- python - 如何使用数据框中的默认字符串更改无效字符串模式?
- regex - 来自 URL 的正则表达式子字符串
- javascript - 我如何将下拉值传递给 ajax 控制器?
- forms - bootstrap 4中form-group的用途是什么?
- .net - 是否有与 log4net 的 BufferingForwardingAppender 等效的 SeriLog 仅用于详细记录警告/错误?
- c++ - 将 MQ4 气体传感器粒子光子代码分离为 .h 和 .cpp 文件
- maven - 如何在 gitlab-ci 中使用 maven 分离测试和构建阶段?
- python-3.x - python 3d A* 寻路无限循环
- scala - 如何动态地将列添加到 DataFrame?