首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用嵌套的SQL查询选择特定子集中的项并使用count>1

使用嵌套的SQL查询选择特定子集中的项并使用count>1
EN

Stack Overflow用户
提问于 2022-04-08 00:49:37
回答 2查看 105关注 0票数 0

我试图弄清楚如何从两个表中选择数据,其中我使用count>1选择数据,而且仅在特定的一年中。我当前的查询如下:

代码语言:javascript
运行
复制
SELECT table1.ID, table1.name, table1.data
FROM table1
WHERE  table1.ID IN (
    SELECT table2.ID
    FROM table2
    WHERE table2.year = '2020' AND table2.ID IN (
        SELECT table2.ID
        FROM table2
        GROUP BY table2.ID
        HAVING COUNT(*) > 1
    )
);

但是,如果跨多年使用count=1检索给定年份的数据,则使用count>1检索数据。如何编写查询以排除这些查询?

编辑背景:在我想要输出的table1中,我们有与键ID相关的名称和数据,这个表不经常更改,在table2中,我存储的信息每年更新一次。我只想为那些发生在2020年不止一次,但在多年内不超过一次发生的事件选择id、名称和数据。

EN

回答 2

Stack Overflow用户

发布于 2022-04-08 01:00:49

您可以将其表示为一个联接:

代码语言:javascript
运行
复制
SELECT t1.ID, t1.name, t1.data
FROM table1 t1
INNER JOIN
(
    SELECT ID
    FROM table2
    GROUP BY ID
    HAVING COUNT(CASE WHEN year = 2020 THEN 1 END) > 0 AND COUNT(*) > 1
) t2
    ON t2.ID = t1.ID;
票数 0
EN

Stack Overflow用户

发布于 2022-04-08 01:34:22

您应该在IN子句中检查这两个条件:

代码语言:javascript
运行
复制
Select table1.ID, table1.name, table1.data
From table1
WHERE  table1.ID IN (
    SELECT table2.ID
    FROM table2
    WHERE table2.ID IN (
        SELECT table2.ID
        FROM table2
        GROUP BY table2.ID
        HAVING COUNT(*) > 1 and
        table2.year = '2020')
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71790491

复制
相关文章

相似问题

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