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

如何查询仅关联TagId=1且未关联TagId=2的Tags表记录

问题:筛选仅关联TagId=1且未关联TagId=2的记录

现有Tags表结构及数据

TagIdName
1abc
2abc
1def
2def
1ret

需求说明

需要获取仅关联TagId = 1,且未关联TagId = 2的唯一记录。即如果某个Name同时绑定了TagId=1和TagId=2,则不返回该Name的任何记录,最终只保留仅与TagId=1关联的Name记录。

预期结果

TagIdName
1ret

你尝试的SQL语句

SELECT 
    * 
FROM
    (SELECT
         ROW_NUMBER() OVER (PARTITION BY TagId ORDER BY Name) RN
     FROM
         Tags) t 
WHERE
    t.tagId = 1

正确的查询方法

下面提供几种可行的解法:

方法一:分组统计筛选

通过分组统计每个Name关联的不同TagId数量,筛选出仅包含TagId=1的记录:

SELECT TagId, Name
FROM Tags
WHERE Name IN (
    SELECT Name
    FROM Tags
    GROUP BY Name
    HAVING COUNT(DISTINCT TagId) = 1 AND MAX(TagId) = 1
)

方法二:左连接排除法

通过左连接匹配存在TagId=2的同名记录,筛选出没有匹配结果(即未关联TagId=2)且当前TagId=1的记录:

SELECT t1.TagId, t1.Name
FROM Tags t1
LEFT JOIN Tags t2 
    ON t1.Name = t2.Name 
    AND t2.TagId = 2
WHERE t2.Name IS NULL 
  AND t1.TagId = 1

方法三:NOT EXISTS子查询

直接排除那些存在TagId=2关联的Name,只保留TagId=1且无对应TagId=2记录的数据:

SELECT TagId, Name
FROM Tags t1
WHERE TagId = 1
  AND NOT EXISTS (
      SELECT 1
      FROM Tags t2
      WHERE t2.Name = t1.Name 
        AND t2.TagId = 2
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:58:17