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

如何用单条SELECT语句筛选col1对应唯一col2值的所有记录?

解决方案:筛选同一ID对应唯一值的记录

这里有两种单条SELECT语句的实现方式,你可以根据自己使用的数据库版本选择合适的:

方法1:使用窗口函数(推荐现代数据库)

SELECT col1, col2
FROM (
    SELECT 
        col1, 
        col2,
        -- 按col1分组,计算每组内不同col2的数量
        COUNT(DISTINCT col2) OVER (PARTITION BY col1) AS unique_col2_count
    FROM Demo
) AS filtered_subquery
-- 只保留每组内col2唯一的记录
WHERE unique_col2_count = 1;

逻辑说明

  • 子查询里用PARTITION BY col1把数据按ID分组,COUNT(DISTINCT col2)统计每个ID下不同col2值的数量
  • 外层筛选出统计数量为1的记录,这样就确保了对应的ID所有col2值完全一致,不会出现混合值的情况

方法2:使用关联子查询(兼容性更强)

SELECT d1.col1, d1.col2
FROM Demo d1
-- 排除那些存在同一ID但不同col2值的记录
WHERE NOT EXISTS (
    SELECT 1
    FROM Demo d2
    WHERE d2.col1 = d1.col1
      AND d2.col2 != d1.col2
);

逻辑说明

  • 对于每条记录,检查是否存在同一个ID但col2值不同的其他记录
  • 如果不存在这样的记录,说明该ID下所有col2值都相同,就保留这条记录

这两种方法都能精准得到你需要的输出结果,比如针对你的Demo表,两种语句都会返回col1为100的所有4条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:57:07