sql - 帮助进行简单的 SQL 更新 + 加入

标签 sql

我认为这应该很简单,但我是 SQL 新手。

我有两张 table 。一个是项目 ID 和描述的列表,另一个是对应的旧 ID 和新 ID 的映射。像这样:

    ID_MAP
OLD_ID   NEW_ID
---------------
1        101
2        102

    ITEMS
ID       DESCRIPTION
--------------------
1        "ItemA"
2        "ItemB"
...
101      <null>
102      <null>

我需要根据 map 将旧元素描述复制到新元素中。我想我需要在 update 中使用 inner join,但它不起作用,我什至不确定这是正确的方法。

我正在尝试像这样的语句

update ITEMS
set (select ITEMS.DESCRIPTION
     from ITEMS
     join ID_MAP
     on ITEMS.ID = ID_MAP.NEW_ID) = 
    (select ITEMS.DESCRIPTION
     from ITEMS
     join ID_MAP
     on ITEMS.ID = ID_MAP.OLD_ID)

当然,它是行不通的。我应该做什么?

最佳答案

update new_item
    set description = old_item.description
    from items old_item
        inner join id_map im
            on old_item.id = im.old_id
        inner join items new_item
            on im.new_id = new_item.id

关于sql - 帮助进行简单的 SQL 更新 + 加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186169/

上一篇:Java 布局管理器

下一篇:Apache 文件匹配

相关文章:

sql - 带有子查询的 Oracle 选择

sql - 从sql server中的表中获取前n行

mysql 按 order by desc 不使用子查询获取最新记录

sql - 数据库表优化连接与重复列

mysql - 计算一个字符串在 VARCHAR 字段中出现的次数?

php - 将 var_dump 保存到文本文件中

sql - MyBatis 重用查询来获取 count(*)

mysql - MySql中树结构(邻接表)的递归CTE

mysql - 从一列匹配所有的几个表中选择全部

sql - TCP 提供程序 : The specified network name is no longer available