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

多列查询合并单行:关联两表生成指定结果的SQL语句怎么写?

解决多字段关联同一表的SELECT查询问题

这是个典型的多表关联场景,我们需要从表B里分别匹配表A中两个不同ItemCode对应的类型——因为要多次关联同一张表,所以得给表B起不同的别名来区分关联逻辑。

先明确两张表的结构和数据:

表A结构与数据

CREATE TABLE TableA (
    Item1Name VARCHAR(50),
    Item1Code VARCHAR(10),
    Item2Name VARCHAR(50),
    Item2Code VARCHAR(10)
);

INSERT INTO TableA VALUES ('ABC', '001', 'DEF', '002');

表B结构与数据

CREATE TABLE TableB (
    ItemCode VARCHAR(10),
    ItemType VARCHAR(50)
);

INSERT INTO TableB VALUES ('001', 'Cookware'), ('002', 'Drinks');

最终的SELECT语句

SELECT 
    a.Item1Name,
    a.Item1Code,
    a.Item2Name,
    a.Item2Code,
    b1.ItemType AS Item1Type,
    b2.ItemType AS Item2Type
FROM TableA a
JOIN TableB b1 ON a.Item1Code = b1.ItemCode
JOIN TableB b2 ON a.Item2Code = b2.ItemCode;

语句解释

  • 给表A起别名a简化书写;
  • 第一次关联表B用别名b1,匹配Item1Code,把对应的ItemType重命名为Item1Type;
  • 第二次关联表B用别名b2,匹配Item2Code,把对应的ItemType重命名为Item2Type;
  • 这里用的是JOIN(内连接),只有当表B中存在对应Code时才会返回结果;如果需要即使表B没有匹配Code也保留表A的数据,可以换成LEFT JOIN。

执行这条语句后,就能得到你想要的结果:

Item1NameItem1CodeItem2NameItem2CodeItem1TypeItem2Type
ABC001DEF002CookwareDrinks

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:09:54