首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在exists子句中使用having count()

问在exists子句中使用having count()
EN

Stack Overflow用户
提问于 2012-06-01 19:51:18
回答 3查看 11.7K关注 0票数 4

我正在尝试创建一个SQL查询,其中'exists‘子句中的子查询有一个'having’子句。奇怪的是。没有错误,子查询作为独立查询工作。但是,使用'having‘子句的整个查询结果与没有’having‘子句的结果完全相同。

这就是我的查询:

代码语言:javascript
复制
 SELECT X
   FROM A
  WHERE exists (
               SELECT X, count(distinct Y)
                 FROM B
             GROUP BY X
               HAVING count(distinct Y) > 2)  

因此,我尝试从A中选择行,其中X在B中Y的出现次数超过两次。但是,结果还包括子查询中不存在的记录。我在这里做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-01 19:54:47

您不需要关联这两个查询:

代码语言:javascript
复制
SELECT  X
FROM    A
WHERE   (
        SELECT  COUNT(DISTINCT y)
        FROM    b
        WHERE   b.x = a.x
        ) > 2
票数 6
EN

Stack Overflow用户

发布于 2012-06-01 20:10:20

您的查询如下所示:

如果有多个记录在B中按Y分组,则从A中选择X。

如果您的‘Existes子查询’返回表B中的一条记录,则条件为真,您将从A中获取所有行。

尝试:

代码语言:javascript
复制
select X
from A
where exists (select 1
              from B
              where B.x = A.x
              group by b.x
              having count(distinct b.y) > 2
             )
票数 4
EN

Stack Overflow用户

发布于 2018-09-14 04:52:37

我遇到了类似的情况,并通过连接解决了问题,因为其他答案对我不起作用。我试着与你的通用示例相关联。希望对其他人有帮助!

代码语言:javascript
复制
SELECT  X
FROM    A
JOIN (SELECT X, COUNT(DISTINCT y)
      FROM B
      GROUP BY X
      HAVING count(distinct Y) > 2) C
ON A.X = C.X
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10849731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档