首页 > 解决方案 > MySQL - 使用来自多个表的更新/设置

问题描述

我正在尝试使用另一个表中的命名约定来更新一个表中名为“名称”的列。

我下面的脚本不起作用,我不太确定为什么......要么出现语法错误,要么我尝试以其他方式执行此操作,我最终将所有“名称”都设为 NULL:

UPDATE table1
SET Name = 
ISNULL(
    (SELECT TOP 1 CorrectSSPname
    FROM table2
    WHERE UPPER(Name) LIKE  '%’ + UPPER(WrongSSPname) + ‘%')
    , Name
    )
WHERE DATE >=  '2018-07-01'

我可以使用以下脚本进行一次更新,但无法使用上面的脚本进行多次更新:

UPDATE table1
SET Name = 'xxx'
WHERE Name like 'yyy'

标签: mysqlselectsetsql-updatesql-like

解决方案


您可以尝试这样的查询:

UPDATE tabel1 tbl1
LEFT JOIN table2 tbl2 ON UPPER(tbl2.WrongSSPname) LIKE CONCAT('%', UPPER(tbl1.Name), '%')
SET tbl1.Name = tbl2.CorrectSSPname
WHERE tbl1.DATE >= '2018-07-01'

推荐阅读