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

编写MySQL语句查询与指定tag_name无关联的field_name

MySQL查询未关联指定标签的字段名实现方案

前提表结构

  • 字段表(表1):包含ID、FIELD_NAME两个字段,存储映射关系:ID=1对应field_1、ID=2对应field_2、ID=3对应field_3
  • 标签表(表2):包含ID、TAG_NAME两个字段,存储映射关系:ID=1对应tag_1、ID=2对应tag_2、ID=3对应tag_3、ID=4对应tag_4
  • 关联表(表3):包含FIELD_ID、TAG_ID两个字段,存储字段和标签的绑定关系:field_1关联tag_1/tag_2/tag_3,field_2关联tag_1,field_3关联tag_2/tag_3

实现逻辑

先获取指定标签名称对应的标签ID,再排除所有和该标签ID有关联关系的字段,剩下的字段即为所求结果。

可用查询语句

方案1:NOT IN子查询写法(逻辑易懂,适合小数据量场景)

SELECT f.FIELD_NAME
FROM 表1 f
WHERE f.ID NOT IN (
    SELECT r.FIELD_ID
    FROM 表3 r
    INNER JOIN 表2 t ON r.TAG_ID = t.ID
    WHERE t.TAG_NAME = '输入要查询的标签名'
);

测试验证:

  • 输入标签名tag_1时,返回结果为field_3,符合需求
  • 输入标签名tag_4时,子查询返回空集合,最终返回所有字段field_1/field_2/field_3,符合需求

方案2:LEFT JOIN写法(关联查询性能更优,适合大数据量场景)

SELECT f.FIELD_NAME
FROM 表1 f
CROSS JOIN 表2 t
LEFT JOIN 表3 r ON f.ID = r.FIELD_ID AND t.ID = r.TAG_ID
WHERE t.TAG_NAME = '输入要查询的标签名'
AND r.FIELD_ID IS NULL;

提示:如果三张表有实际业务命名,将语句中的表1/表2/表3替换为实际表名即可执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 09:00:05