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

如何筛选同时关联指定TAG值的相同ID记录?

筛选同时关联指定TAG值的ID

我需要从下表中筛选出至少同时关联TAG值A和B的ID(关联更多TAG值也符合要求),最终只保留满足条件的ID。

原始数据表

IDTAG
1A
2A
1B
2B
3B
2C
3C

预期输出

ID
1
2

可扩展的SQL查询方案

方案1:分组统计匹配TAG数量(推荐,易扩展)

这种方式只需调整IN中的TAG列表和HAVING后的数字,就能适配任意数量的指定TAG:

SELECT ID
FROM your_table_name
WHERE TAG IN ('A', 'B') -- 替换为目标TAG列表
GROUP BY ID
HAVING COUNT(DISTINCT TAG) = 2; -- 数字对应指定TAG的总数量

若表中同一ID不会重复出现相同TAG,可去掉DISTINCT,改用COUNT(*) = 2提升查询效率。

方案2:多表连接(适合少量TAG场景)

当TAG数量不多时,可通过自连接实现,每新增一个TAG就增加一次表连接:

SELECT DISTINCT t1.ID
FROM your_table_name t1
JOIN your_table_name t2 ON t1.ID = t2.ID
WHERE t1.TAG = 'A' AND t2.TAG = 'B';

如需同时匹配A、B、C三个TAG,只需再JOIN一次表并添加对应TAG条件即可。

方案3:窗口函数实现(灵活扩展)

通过窗口函数统计每个ID匹配指定TAG的数量,再筛选符合条件的ID:

WITH tag_counts AS (
    SELECT 
        ID,
        COUNT(DISTINCT CASE WHEN TAG IN ('A', 'B') THEN TAG END) OVER (PARTITION BY ID) AS matched_tags
    FROM your_table_name
)
SELECT DISTINCT ID
FROM tag_counts
WHERE matched_tags = 2; -- 对应指定TAG的总数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:50:17