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

如何查询N条产品记录并排除已关联标签的记录?

嘿,我来帮你梳理下你的表结构和数据,再给出符合常见需求的查询方案~

表结构定义

首先是你的三张表的创建语句:

CREATE TABLE products (
  id INT,
  name VARCHAR(50)
);

CREATE TABLE tags (
  id INT,
  name VARCHAR(50)
);

CREATE TABLE product_tags (
  product_id INT,
  tag_id INT
);
现有数据

products表数据

idname
1Rice
2Bean
3Milk

tags表数据

idname
1Eat
2Drink
3Seeds
4Cow

(注:你没给出product_tags表的关联数据,我先假设一组常见的关联场景来举例:

  • Rice关联Eat和Seeds
  • Bean关联Eat和Seeds
  • Milk关联Drink和Cow)
常见需求的查询示例

需求1:获取每个产品+合并后的标签列表

如果想把每个产品对应的所有标签合并成逗号分隔的字符串,用这个SQL:

SELECT
  p.id,
  p.name,
  GROUP_CONCAT(t.name SEPARATOR ', ') AS tags
FROM products p
LEFT JOIN product_tags pt ON p.id = pt.product_id
LEFT JOIN tags t ON pt.tag_id = t.id
GROUP BY p.id, p.name;

假设product_tags数据如下:

product_idtag_id
11
13
21
23
32
34

查询结果会是:

idnametags
1RiceEat, Seeds
2BeanEat, Seeds
3MilkDrink, Cow

需求2:获取产品-标签的逐行对应关系

如果需要每行显示一个产品和一个对应的标签(无标签的产品也会显示),用这个查询:

SELECT
  p.id AS product_id,
  p.name AS product_name,
  t.id AS tag_id,
  t.name AS tag_name
FROM products p
LEFT JOIN product_tags pt ON p.id = pt.product_id
LEFT JOIN tags t ON pt.tag_id = t.id;

内容的提问来源于stack exchange,提问作者rodrigo-silveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:34:19