根据另一列的值排除记录
Excluding Records Based on Another Column's Value
我在 Redshift 工作,并且有两列来自 Adobe 数据源:
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%')
我在 Redshift 工作,并且有两列来自 Adobe 数据源:
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%')