gpt4 book ai didi

mysql - SQL 选择带有子查询排除的字段

转载 作者:行者123 更新时间:2023-11-29 07:40:32 24 4
gpt4 key购买 nike

问题的标题可能不是最佳的。

我想要实现的是从网站尚未删除的表site中检索company_id。但是,一个公司有多个站点。我不想选择一家拥有一个或多个未删除网站的公司。

SELECT DISTINCT(company_id) FROM site WHERE _isDeleted = 1;

向我提供已删除网站的公司(8000 多个结果)。

但是当我尝试时:

SELECT DISTINCT(company_id) FROM site WHERE _isDeleted = 1 
AND company_id NOT IN (SELECT company_id FROM site WHERE _isDeleted = 0);

它给了我 0 个结果。为什么?

性能不成问题,因为它将是一次运行策略查询。

最佳答案

我不太喜欢这个习语的大多数用法 NOT IN (<subquery>) 。对于这个特殊的需求,我会考虑这样的查询:

SELECT company_id
FROM site
GROUP BY company_id
HAVING COUNT(*) != COUNT(NULLIF(_isDeleted, 0))

可容纳 _isDeleted 的任何值,与 NULL实际上相当于 0 ,并且所有其他值实际上等同于 1 。我还发现它的含义比原始查询的含义更清晰,如果您关心性能,那么它的性能可能会更好,这一点很重要。

关于mysql - SQL 选择带有子查询排除的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29217256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com