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

SQL查询:基于活跃筛选条件统计各标签关联的有效产品数量

标签关联产品计数查询方案

需求说明

现有三张表:产品表products、标签表tags、产品标签关联表productTags,需要基于当前生效的产品筛选条件,查询全量标签列表,同时返回每个标签匹配到的符合筛选条件的产品数量,无匹配时计数为0。

表结构说明

  • products 产品表
字段类型说明
idint产品主键
namevarchar产品名称
  • tags 标签表
字段类型说明
idint标签主键
namevarchar标签名称
  • productTags 产品标签关联表
字段类型说明
productIdint关联产品ID
tagIdint关联标签ID

通用查询SQL

SELECT
  t.id AS id,
  t.name AS name,
  COUNT(DISTINCT valid_p.id) AS productCount
FROM tags t
-- 关联标签和产品的映射关系
LEFT JOIN productTags pt ON t.id = pt.tagId
-- 关联符合当前筛选条件的产品集合
LEFT JOIN (
  -- 这里放你当前生效的产品筛选逻辑,返回符合要求的产品ID列表即可
  SELECT id FROM products
  -- 示例筛选条件1:产品名包含指定字符
  -- WHERE name LIKE '%Product%'
  -- 示例筛选条件2:已选中标签3作为筛选条件
  -- WHERE id IN (SELECT productId FROM productTags WHERE tagId = 3)
) valid_p ON pt.productId = valid_p.id
-- 按标签分组统计
GROUP BY t.id, t.name
ORDER BY t.id ASC;

结果说明

如果不需要任何额外筛选,直接去掉valid_p子查询里的WHERE条件即可,此时返回的基础结果为:

idnameproductCount
1Tag13
2Tag 22
3Tag 31

如果你示例中的Tag2计数为0,只需要在valid_p子查询里添加对应的过滤规则,比如排除所有关联了Tag2的产品即可。

注意事项

  • 所有产品筛选逻辑都放到内层valid_p子查询中,不要写到外层WHERE条件中,否则会导致匹配数为0的标签被过滤掉
  • 用COUNT(DISTINCT valid_p.id)可以避免关联表重复数据导致的计数错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:07