首页 > 解决方案 > 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 条件进行过滤。

标签: sqlamazon-web-servicesamazon-redshift

解决方案


您可以使用以下逻辑:

SELECT *
FROM yourTable
WHERE chr1 <> 'a' OR chr2 = 'x1';

因此,列入白名单的记录是不具有的记录chr1 = 'a'或者是具有此值但也具有的记录chr2 = 'x1'


推荐阅读