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

SQL查询:筛选GROUP、DATE匹配且LANGUAGE不同的数据记录

SQL多条件筛选实现方案

需求说明

筛选同时满足GROUP、DATE两个字段值匹配,且LANGUAGE字段值不相同的记录。排除两类不符合要求的记录:

  • 仅DATE匹配但GROUP不匹配的记录
  • GROUP、DATE、LANGUAGE三个字段值全部相同的记录

示例表数据

NAMEGROUPDATELANGUAGE
Anne31/1/21en
John32/4/21en
Kyle21/1/21es
Jake33/8/21es
Stacy15/9/21fr
Mike23/3/21fr
Paul21/1/21fr
Brian15/9/21en
Mark31/1/21en

期望输出

NAMEGROUPDATELANGUAGE
Kyle21/1/21es
Paul21/1/21fr
Stacy15/9/21fr
Brian15/9/21en

实现SQL

方案1:窗口函数实现(兼容性好,适配MySQL 8.0+/PostgreSQL/Spark SQL等主流引擎)

注意GROUP是SQL保留关键字,需要用反引号转义:

WITH group_lang_stat AS (
    SELECT
        *,
        COUNT(DISTINCT LANGUAGE) OVER (PARTITION BY `GROUP`, DATE) AS distinct_lang_cnt
    FROM 替换为你的表名
)
SELECT NAME, `GROUP`, DATE, LANGUAGE
FROM group_lang_stat
WHERE distinct_lang_cnt >= 2;

逻辑说明:先按GROUP和DATE分组统计每个分组下不同语言的数量,仅返回语言数量≥2的分组内的所有记录,自动排除不符合要求的记录。

方案2:EXISTS关联实现(兼容低版本MySQL等不支持窗口函数的引擎)

SELECT t1.NAME, t1.`GROUP`, t1.DATE, t1.LANGUAGE
FROM 替换为你的表名 t1
WHERE EXISTS (
    SELECT 1
    FROM 替换为你的表名 t2
    WHERE t2.`GROUP` = t1.`GROUP`
      AND t2.DATE = t1.DATE
      AND t2.LANGUAGE != t1.LANGUAGE
);

逻辑说明:对每条记录校验是否存在同GROUP同DATE但不同语言的其他记录,存在则保留该记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:01