You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何根据字段在表内的出现次数筛选符合要求的查询结果

SQL查询字段重复值对应全量行的实现方案

要实现你需要的效果,WHERE条件可通过关联子查询统计同字段值的出现次数来填充,完整语句如下:

SELECT * 
FROM table t1
WHERE (SELECT COUNT(*) FROM table t2 WHERE t2.Column1 = t1.Column1) >= 2

如果使用支持窗口函数的数据库(如MySQL 8.0及以上版本、PostgreSQL、SQL Server等),更推荐使用性能更高的窗口函数写法:

SELECT * 
FROM (
    SELECT *,
        COUNT(*) OVER (PARTITION BY Column1) AS occurrence_count
    FROM table
) temp
WHERE occurrence_count >= 2

两种写法的逻辑说明:

  • 关联子查询方案:对每一行的Column1值,统计全表中该值的出现总次数,筛选次数≥2的行
  • 窗口函数方案:先按Column1分组统计每组的行数作为额外字段,再筛选符合条件的行,避免了多次子查询,性能更优

针对你给出的测试表,两种写法最终都会返回Column1为a的2行结果,符合预期。

内容的提问来源于stack exchange,提问作者CheckCheck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:15:04