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

基于另一表数据的SQL计算字段:自动化填充Speed Control列

最优实现方案:匹配Tag数字部分更新Speed Control列

需求回顾

现有两张业务表:

  1. Engineering表
TagSpeed Control
PC-1234
ME-1235
BF-1236
  1. Instrumentation表
FunctionTag
SC1234
SC1235
SC1237

需实现自动化逻辑:若Instrumentation表中存在Function='SC'且Tag与Engineering表Tag的数字部分匹配,则将Engineering表的Speed Control设为Yes,否则设为No。

分数据库类型实现方案

1. MySQL/MariaDB

利用SUBSTRING_INDEX提取Tag的数字部分,结合EXISTS子查询判断匹配:

UPDATE Engineering e
SET `Speed Control` = CASE
    WHEN EXISTS (
        SELECT 1
        FROM Instrumentation i
        WHERE i.Function = 'SC'
        AND i.Tag = SUBSTRING_INDEX(e.Tag, '-', -1)
    ) THEN 'Yes'
    ELSE 'No'
END;

2. SQL Server

用RIGHT和CHARINDEX组合提取数字部分:

UPDATE e
SET [Speed Control] = CASE
    WHEN EXISTS (
        SELECT 1
        FROM Instrumentation i
        WHERE i.Function = 'SC'
        AND i.Tag = RIGHT(e.Tag, LEN(e.Tag) - CHARINDEX('-', e.Tag))
    ) THEN 'Yes'
    ELSE 'No'
END
FROM Engineering e;

3. PostgreSQL

使用SPLIT_PART拆分Tag字符串获取数字部分:

UPDATE Engineering e
SET "Speed Control" = CASE
    WHEN EXISTS (
        SELECT 1
        FROM Instrumentation i
        WHERE i.Function = 'SC'
        AND i.Tag = SPLIT_PART(e.Tag, '-', 2)
    ) THEN 'Yes'
    ELSE 'No'
END;

方案优势说明

  • 采用EXISTS子查询做匹配判断,相比JOIN关联更高效,找到匹配项后立即停止检索,减少不必要的计算
  • 针对不同数据库的字符串特性选择对应函数,确保Tag数字部分提取准确
  • 通过CASE语句批量处理全表数据,一次性完成自动化更新,无需手动逐条操作

内容的提问来源于stack exchange,提问作者Drafter-SQL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:10:46