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

如何编写查询返回field 1字段无重复值的记录?

嘿,我来帮你搞定这个需求!要只返回field 1字段没有重复值的行,也就是只保留那些在field 1里唯一出现的记录,这里有几个实用的SQL写法,你可以根据自己用的数据库(比如MySQL、PostgreSQL、SQL Server这些)选合适的:

方法1:GROUP BY + HAVING 搭配子查询

先找出field 1里只出现一次的值,再用这些值匹配原表的完整记录:

SELECT *
FROM your_table
WHERE `field 1` IN (
    SELECT `field 1`
    FROM your_table
    GROUP BY `field 1`
    HAVING COUNT(*) = 1
);

子查询会先统计每个field 1值的出现次数,只留下次数为1的唯一值,外层查询就只取这些值对应的整行数据,刚好能排除你提到的123、789这类重复值的行。

方法2:窗口函数(适配MySQL 8.0+、PostgreSQL、SQL Server等)

用窗口函数直接给每个field 1分组的行统计数量,再筛选出数量为1的组:

SELECT *
FROM (
    SELECT *,
           COUNT(*) OVER (PARTITION BY `field 1`) AS value_count
    FROM your_table
) AS sub_query
WHERE value_count = 1;

这里PARTITION BY field 1``会把相同field 1值的行归为一组,COUNT(*)统计每组的行数,最后只保留行数为1的组内记录,逻辑清晰还能一次性拿到整行数据。

方法3:EXISTS子查询(适合有唯一主键的表)

如果你的表有唯一标识(比如id),可以用这种方式检查是否存在重复行:

SELECT t1.*
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.`field 1` = t1.`field 1`
    AND t2.id != t1.id
);

简单来说就是:对于每一行t1,检查有没有其他行t2和它field 1值相同但id不同,如果没有,说明这行的field 1是唯一的,就保留它。

这几种方法都能达到你要的效果——剔除field 1值重复的行,只留下唯一值对应的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:19:56