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

如何编写MySQL SQL关联多表查询style表的style_name字段?

搞定Style表名称查询的MySQL语句

没问题,我来帮你梳理下怎么结合给定的表结构写出需要的SQL语句。首先先理清楚各表之间的关联逻辑:

  • 产品表Products和产品风格关联表product_style通过Products.id和product_style.product_id绑定
  • product_style又通过style_id关联到style表的主键id
  • style表的school_id对应schools表的id,还有school_products表用来关联学校和产品

下面根据不同的查询需求,给你对应的SQL写法:

1. 查所有关联产品的风格名称

如果要获取所有和产品有绑定关系的风格名称,直接通过产品→产品风格→风格的关联路径查询就行:

SELECT s.name AS style_name
FROM Products p
JOIN product_style ps ON p.id = ps.product_id
JOIN style s ON ps.style_id = s.id;

用你给的示例数据,这个语句会返回style1、style2、style3这三个风格名称。

2. 查指定产品的关联风格名称

要是只需要看某一个产品(比如id为1的sample1)对应的风格,加个WHERE条件就行:

SELECT s.name AS style_name
FROM Products p
JOIN product_style ps ON p.id = ps.product_id
JOIN style s ON ps.style_id = s.id
WHERE p.id = 1; -- 这里替换成你要查的产品ID

执行后就只会返回sample1对应的三个风格。

3. 查指定学校的风格名称

如果想获取某个学校(比如school1)下的所有风格,直接关联schools和style表:

SELECT s.name AS style_name
FROM schools sch
JOIN style s ON sch.id = s.school_id
WHERE sch.name = 'school1'; -- 替换成目标学校名称

示例数据里会返回school1对应的style1、style2。

4. 查学校关联产品的对应风格名称

如果要找某个学校关联的所有产品对应的风格,就得把school_products也加进来关联:

SELECT DISTINCT s.name AS style_name
FROM schools sch
JOIN school_products sp ON sch.id = sp.school_id
JOIN Products p ON sp.product_id = p.id
JOIN product_style ps ON p.id = ps.product_id
JOIN style s ON ps.style_id = s.id
WHERE sch.name = 'school1';

因为你给的示例里sample2和sample3没有对应的风格记录,所以实际返回还是style1、style2、style3,用DISTINCT是为了避免重复的风格名称出现。

小提示

  • 如果想包含那些没有关联产品/学校的风格记录,可以把JOIN改成LEFT JOIN;
  • 如果结果里有重复的风格名,记得用DISTINCT去重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:15:48