表A有三列: IP地址(Varchar)、实验室ID(int)和源地址(int)。
表B有两列: ID(int)和labName(varchar)
labName表B由IP地址A中的第一个八位字节组成。例如,如果IP是192.168.5.18,那么将有一个实验室名称'lab 192‘。我需要做的是用表B中的匹配ID更新表A的labID列。
我已经完成了从IP构建实验室名称的解析:
我不确定该如何做的是基于该计算字段的更新。下面的代码不能工作,但我希望它能解释我正在尝试做的事情:
UPDATE tableA
SET labID = (
SELECT labName
FROM tableB
WHERE labName = concat(‘lab ‘, substring_index(ip, “.”, 1)
)
WHERE origin = 3发布于 2021-01-12 05:36:25
MySQL将允许您使用UPDATE syntax中table_reference的连接调用join的ON子句中的函数(或任何表达式
UPDATE
tableA
-- Join on the IP substring expression
INNER JOIN tableB ON tableB.labName = CONCAT('lab ', substring_index(tableA.ip, '.', 1))
-- Set labID to tableB ID
SET tableA.labID = tableB.ID
WHERE origin = 3https://stackoverflow.com/questions/65674780
复制相似问题