满足条件时的SQL选择查询
我需要选择所有的网站网址,所有的网站所有者都回答是。如果来自同一站点URL的一个用户回答是,而另一个用户回答否,那么我不需要这些。例如,在上面的示例中,我需要获得google.com,因为两个用户都回答是。您可以使用group by并拥有: 实际上,您可以将having子句简化为:满足条件时的SQL选择查询,sql,sql-server,select,Sql,Sql Server,Select,我需要选择所有的网站网址,所有的网站所有者都回答是。如果来自同一站点URL的一个用户回答是,而另一个用户回答否,那么我不需要这些。例如,在上面的示例中,我需要获得google.com,因为两个用户都回答是。您可以使用group by并拥有: 实际上,您可以将having子句简化为: select site_url from t group by site_url having min(delete_site) = 'yes' and max(delete_site) = 'yes' and
select site_url
from t
group by site_url
having min(delete_site) = 'yes' and max(delete_site) = 'yes' and
count(*) = count(delete_site); -- no NULL values;
下面是另一个版本的方法。 对于空值,我更喜欢使用ISNULL替换,IIF用于将Yes-No解码为可数数字
having count(*) = sum(case when delete_site = 'yes' then 1 else 0 end)
同样,您也可以使用notexists
是和空呢?是否返回?不,我不需要所有网站所有者都只回答“是”的网站URL。顺便说一句,感谢您这么快回复我的帖子。非常有帮助,非常感谢您的帮助。谢谢
having count(*) = sum(case when delete_site = 'yes' then 1 else 0 end)
SELECT
[Site Url]
FROM
Table1
GROUP BY
[Site Url]
HAVING
SUM( IIF(ISNULL([Delete Site], '')='Yes', 0, 1)) = 0
select *
from table t
where not exists (
select 1 from table
where [Site URL] = t.[Site URL] and [Delete Site] <> 'Yes'
)