SQL查询:如何筛选关联Repo_id数量大于1的Stores_id
SQL查询实现方案
核心逻辑为按Stores_id分组,统计每个商家关联的唯一Repo_id数量,过滤出关联数量大于1的结果即可。
基础通用写法(兼容所有主流数据库)
SELECT Stores_id FROM 你的实际表名 GROUP BY Stores_id HAVING COUNT(DISTINCT Repo_id) > 1;
说明:如果你的业务表中不存在同一个
Stores_id对应重复Repo_id的冗余行,可以去掉DISTINCT,直接写COUNT(Repo_id) > 1,查询效率更高。
支持明细关联的窗口函数写法(适用MySQL 8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)
如果后续需要同步带出符合条件的Stores_id对应的所有Repo_id明细,可以用该写法扩展:
SELECT DISTINCT Stores_id FROM ( SELECT Stores_id, Repo_id, COUNT(DISTINCT Repo_id) OVER (PARTITION BY Stores_id) AS repo_total FROM 你的实际表名 ) AS temp WHERE repo_total > 1;
以上两种写法针对你提供的示例表查询,返回结果均为Stores_id 1和4,符合需求。
内容的提问来源于stack exchange,提问作者Hal
相关产品推荐
相关产品推荐

