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

如何使用SQL查找表中某一列文本重复的行

提取数据库中某列存在重复值的行

需求说明

从数据库表中筛选出指定列(示例中为mail列)存在重复值的所有行,保留这些重复行的完整记录。

示例数据

原表:

idmail
01dave.green@mail.com
02joe.smith@mail.com
03dave.green@mail.com
04annie.white@mail.com
05alice.inc@mail.com
06ralph.lauren@mail.com

期望结果:

idmail
01dave.green@mail.com
03dave.green@mail.com

解决方案

以下提供两种通用的SQL实现方式,适用于大多数主流数据库:

方法1:分组子查询

先通过分组统计找出存在重复的mail值,再基于这些值筛选原表中的对应行:

SELECT id, mail
FROM your_table
WHERE mail IN (
    SELECT mail
    FROM your_table
    GROUP BY mail
    HAVING COUNT(*) > 1
)
ORDER BY mail;

方法2:窗口函数(适用于MySQL 8+、PostgreSQL、SQL Server等)

使用窗口函数直接为每行标记对应mail的出现次数,再筛选次数大于1的行:

SELECT id, mail
FROM (
    SELECT 
        id, 
        mail,
        COUNT(*) OVER (PARTITION BY mail) AS mail_count
    FROM your_table
) AS subquery
WHERE mail_count > 1
ORDER BY mail;

说明

  • 需将语句中的your_table替换为你的实际表名
  • 两种方法都能得到目标结果,窗口函数的方式在处理大数据量时性能可能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:54:26