满足条件时的SQL选择查询

满足条件时的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

我需要选择所有的网站网址,所有的网站所有者都回答是。如果来自同一站点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
       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'
)