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

如何动态关联含多值字段的两张SQL表并得到指定结果?

实现两张数据表的动态关联需求

表结构与数据

表#A

CREATE TABLE #A
(
    NAME VARCHAR(10),
    NUMBER INT,
    ID VARCHAR(5)
)

INSERT INTO #A VALUES ('JOHN', 20, 'J10'), ('MIKE', 2, 'M5')

表#A数据:

NAMENUMBERID
JOHN20J10
MIKE2M5

表#B

CREATE TABLE #B
(
    PRODUCT VARCHAR(10),
    NAME VARCHAR(20)
)

INSERT INTO #B 
VALUES ('APPLE', 'JOHN, HARRY'),
       ('ORANGE', 'JOHN,MIKE'),
       ('MANGO', 'JOHN, KATTY, ALEX')

表#B数据:

PRODUCTNAME
APPLEJOHN, HARRY
ORANGEJOHN,MIKE
MANGOJOHN, KATTY, ALEX

解决方案

利用SQL Server的STRING_SPLIT函数拆分#B中NAME字段的逗号分隔值,同时处理值中的前后空格,再与#A进行关联:

SELECT 
    a.NAME,
    a.NUMBER,
    a.ID,
    b.PRODUCT
FROM #A a
JOIN (
    SELECT 
        PRODUCT,
        LTRIM(RTRIM(value)) AS NAME
    FROM #B
    CROSS APPLY STRING_SPLIT(NAME, ',')
) b ON a.NAME = b.NAME
ORDER BY a.NAME, b.PRODUCT

执行结果

NAMENUMBERIDPRODUCT
JOHN20J10APPLE
JOHN20J10MANGO
JOHN20J10ORANGE
MIKE2M5ORANGE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:07:22