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

MySQL多表查询问题:如何从表1取唯一product_Type关联表2字段

解决SQL关联查询返回多列并去重的问题

嘿,我来帮你搞定这个查询问题!你的核心需求是从表1中拿到唯一的product_Type,同时关联表2取出对应的厂商和电话信息,但之前的查询只返回了product_Type一列,问题出在SELECT子句没有包含你需要的其他字段。

正确的基础查询写法

你只需要把想要返回的Manufacturer和Phone字段加到SELECT语句里,同时保留DISTINCT来确保product_Type的唯一性就行:

SELECT DISTINCT 
    1stTable.product_Type,
    2ndTable.Manufacturer,
    2ndTable.Phone
FROM 1stTable
LEFT JOIN 2ndTable ON 1stTable.product_Type = 2ndTable.typeISO;

为什么这么写?

  • 原来的查询只指定了1stTable.product_Type作为返回列,数据库自然只会返回这一列数据;
  • DISTINCT会对SELECT子句中所有字段的组合进行去重,确保最终结果里每个product_Type只出现一次(毕竟表1里有重复的同类型记录);
  • 用LEFT JOIN保证了结果只包含表1中存在的product_Type,哪怕表2里没有对应记录,对应的厂商和电话会显示为NULL,完全符合你的需求。

另一种可选写法(适合表2typeISO唯一的场景)

如果表2的typeISO字段是唯一的(比如是主键或有唯一约束),你也可以用GROUP BY来实现,效果完全一致:

SELECT 
    1stTable.product_Type,
    2ndTable.Manufacturer,
    2ndTable.Phone
FROM 1stTable
LEFT JOIN 2ndTable ON 1stTable.product_Type = 2ndTable.typeISO
GROUP BY 1stTable.product_Type;

这种写法通过分组聚合同类型的记录,因为每个product_Type对应表2中唯一的厂商信息,分组后能直接拿到对应的字段值,部分数据库(比如MySQL开启特定模式后)支持这种简洁写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:12:37