根据另一列的值排除记录

Excluding Records Based on Another Column's Value

我在 Redshift 工作,并且有两列来自 Adob​​e 数据源:

post_evar22 和 post_page_url.

每个 post_evar22 有多个 post_page_url 值,因为它们是 ID 访问过的所有页面。 (它基本上是一个访问者 ID 和他们访问过的所有页面)

我想编写一个查询,我可以在其中列出从未与包含“%thank%”或“%confirm%”的 post_page_url 相关联的不同 post_evar22 值。

在下面的数据集中,查询结果中将完全省略 ID1,因为它与感谢页面和确认页面相关联。

看起来很简单。我错过了什么吗?

SELECT DISTINCT post_evar22
FROM table 
WHERE post_page_url NOT LIKE '%thank%' 
    AND post_page_url NOT LIKE'%confirm%

这是 NOT EXISTS 的情况:

select distinct post_evar22
from table t1
where not exists (
    select 1
    from table t2
    where t2.post_evar22 = t1.post_evar22
    and (t2.post_page_url like '%thank%' or t2.post_page_url like '%confirm%')
)

如果您的 dbms 支持,或者减号:

select post_evar22 from table
minus
select post_evar22 from table where (post_page_url like '%thank%' or post_page_url like '%confirm%')