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

SQL查询需求:筛选Col2仅包含'date'值的Col1对应的所有行

SQL查询需求:筛选Col2仅包含'date'值的Col1对应的所有行

嗨,我来帮你搞定这个查询需求!你的核心要求是:只保留那些**Col1分组下所有Col2值都是'date'**的行——只要某个Col1下面有哪怕一行Col2是null,就把这个Col1的所有记录都排除掉,对吧?

下面给你两种实用的实现方法,适配不同的数据库场景:

方法一:子查询筛选合格的Col1

先找出所有从未出现过null值的Col1,再关联原表拿到对应的行:

SELECT t1.Col1, t1.Col2
FROM your_table t1
WHERE t1.Col1 IN (
    SELECT Col1
    FROM your_table
    GROUP BY Col1
    HAVING COUNT(CASE WHEN Col2 IS NULL THEN 1 END) = 0
);

解释下:子查询通过GROUP BY Col1分组,用COUNT(CASE WHEN Col2 IS NULL THEN 1 END)统计每个Col1下null的数量,等于0就说明这个Col1的所有Col2都是date;外层查询就只取这些合格Col1的所有行。

方法二:窗口函数高效标记(适合支持窗口函数的数据库)

如果你的数据库是MySQL 8+、PostgreSQL、SQL Server这类支持窗口函数的,用这个方法更高效:

SELECT Col1, Col2
FROM (
    SELECT 
        Col1, 
        Col2,
        MAX(CASE WHEN Col2 IS NULL THEN 1 ELSE 0 END) OVER (PARTITION BY Col1) AS has_null
    FROM your_table
) t
WHERE has_null = 0;

这里的窗口函数MAX(...) OVER (PARTITION BY Col1)会给同一个Col1下的所有行标记是否存在null(有null则has_null为1,没有则为0),最后外层筛选出has_null=0的行即可。

两种方法都能得到你想要的结果:只保留Col2全为date的Col1对应的所有记录,也就是示例里bb、dd的那些date行。

备注:内容来源于stack exchange,提问作者Mr.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:03:16