mysql - 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'
解决方案
您可以尝试这样的查询:
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'
推荐阅读
- java - 难以在 Firebase 中将对象保存为子对象(使用 Android Studio)
- c++ - C26444 避免使用自定义构造和销毁的未命名对象 (es.84)
- c# - ASP.NET MVC5 属性路由 - 只有一个匹配操作的模棱两可的操作异常
- django - 如何编写一个结合了四个模型和外键的 DRF 序列化器?
- typescript - 键入我们知道是字符串的对象的属性
- java - 基本身份验证 Java SOAP WebService 客户端
- java - 当我从用户那里得到输入时,为什么我的 java 代码会抛出错误?
- reactjs - 嵌套条件路由渲染
- delphi - 在 Delphi 10.3 中找不到单元“TeeJPEG”
- php - 可以分词吗?[PHP]