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

如何在VB.NET中用4个唯一列内连接3张表并更新LBSTS的CIA列

问题描述

需要在VB.NET中执行一条更新查询,通过4个唯一列内连接三张表(LBSTS、GSDTS、GSGTS),将LBSTS表的CIA列更新为GSDTS表的CIU列。现有两表连接的更新SQL示例如下:

update LBSTS as t1 
inner join GSDTS as t2 on t1.[PNM] = t2.[PNM] AND t1.[NOD] = t2.[NOD] AND t1.[ITM] = t2.[ITM] 
set t1.[CIA] = t2.[CIU] 
WHERE t1.PNM=@PNM

示例数据

表名:GSDTS

PNMITMQTYCIU
1000TEST R 10011020000
1000TEST R 10022010000

表名:GSGTS

PNMDTSSAC
100006/12/202201-01

表名:LBSTS

RFNDTSITEMQTYCIA
100006/12/2022TEST R 1001101
100006/12/2022TEST R 1002201

备注

  • 列SAC与RFN内容一致
  • 列CIU与CIA内容对应(需将CIA更新为CIU的值)

期望输出

表名:GSDTS(无变化)

PNMITMQTYCIU
1000TEST R 10011020000
1000TEST R 10022010000

表名:GSGTS(无变化)

PNMDTSSAC
100006/12/202201-01

表名:LBSTS(CIA列已更新)

RFNDTSITEMQTYCIA
100006/12/2022TEST R 10011020000
100006/12/2022TEST R 10022010000

解决方案

根据三张表的关联逻辑和4个唯一列的要求,修改后的SQL语句如下:

update LBSTS as t1
inner join GSDTS as t2 
  on t1.[RFN] = t2.[PNM] 
  AND t1.[DTS] = t2.[NOD] -- 对应原SQL中的NOD列,匹配示例数据的DTS字段
  AND t1.[ITEM] = t2.[ITM]
inner join GSGTS as t3 
  on t1.[RFN] = t3.[PNM] 
  AND t1.[RFN] = t3.[SAC] -- 按备注要求关联RFN与SAC列
  AND t1.[DTS] = t3.[DTS]
set t1.[CIA] = t2.[CIU]
WHERE t1.RFN=@PNM -- 原SQL的PNM对应示例数据的RFN字段

逻辑说明

  1. 保留LBSTS与GSDTS的核心关联,同时将原SQL中的列名与示例数据对应对齐:t1.RFN对应原PNM,t1.DTS对应原NOD,t1.ITEM对应原ITM。
  2. 新增与GSGTS的内连接,通过三个关联条件覆盖4个唯一列:
    • t1.RFN = t3.PNM:关联跨三表的PNM字段
    • t1.RFN = t3.SAC:按备注要求关联RFN与SAC字段
    • t1.DTS = t3.DTS:关联跨两表的DTS字段
      加上与GSDTS关联的ITEM/ITM字段,正好凑齐4个唯一关联列。
  3. 仅更新LBSTS的CIA列,赋值为GSDTS的CIU列值,WHERE条件匹配业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:10:26