You need to enable JavaScript to run this app. 如何在多对多关系下筛选匹配指定用户标签的文章数据
优惠活动
大模型
产品
解决方案
定价
更多

如何在多对多关系下筛选匹配指定用户标签的文章数据

实现方案

这里提供两种常用的实现逻辑,可根据数据量和业务需求选择:

方案1:INNER JOIN + 去重(逻辑直观)

通过关联表匹配对应用户的收藏标签,最后对文章结果去重,适合中小数据量场景:

SELECT DISTINCT a.Article_id, a.Article_name
FROM Articles a
INNER JOIN Article_Tags at ON a.Article_id = at.Article_id
INNER JOIN Users_Tags ut ON at.tag_id = ut.tag_id
WHERE ut.User_id = '要查询的用户ID,比如User1';

查询User1时返回结果为:

Article_idArticle_name
1Dogs
3Sheep

方案2:EXISTS子查询(性能更优)

无需额外去重,匹配到符合条件的关联关系就直接返回结果,大数据量下执行效率更高:

SELECT a.Article_id, a.Article_name
FROM Articles a
WHERE EXISTS (
    SELECT 1
    FROM Article_Tags at
    INNER JOIN Users_Tags ut ON at.tag_id = ut.tag_id
    WHERE at.Article_id = a.Article_id
      AND ut.User_id = '要查询的用户ID,比如User1'
);

如果需要输出带匹配标签的明细(即参考示例格式,保留重复文章条目),去掉DISTINCT同时返回tag_id字段即可:

SELECT a.Article_id, a.Article_name, at.tag_id
FROM Articles a
INNER JOIN Article_Tags at ON a.Article_id = at.Article_id
INNER JOIN Users_Tags ut ON at.tag_id = ut.tag_id
WHERE ut.User_id = 'User1';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:45:03