如何使用在另一个 table 中预定义为外键的 id 属性填充 table

How to populate a table with an id attribute that is predefined as a foreign key in another table

我的数据库中有三个 table:

  1. HASSKILLS with attributes (skillid, attribute 1, attribute 2, attribute 3) - skillid 是主键和外键到技能
  2. 具有属性(描述、属性1、属性2、属性3)的OLDHASSKILLS - 描述是主键
  3. SKILLS with attributes (skillid, description) - skillid为主键

SKILLS 中的每个 skillid 对于单个描述都是唯一的(例如“3”,'can climb trees')

我已经创建了 HASSKILLS table,它最终将取代我的 OLDHASSKILLS,因为我想引用并使用 skillid 来引用 SKILLS,而不是描述.

OLDHASSKILLS 和 SKILLS 都填充了数据,我的 HASSKILLS 也填充了数据,除了 skillid

我想有效地用新 HASSKILLS table 中相应的 skillid 值替换所有 description 值。

我已经尝试通过使用 INSERT INTO 语句和嵌套查询来做到这一点。

INSERT INTO HASSKILLS(SkillId) 
    SELECT SkillId 
    FROM SKILLS 
    WHERE 
        (SELECT d1.description, d2.description 
         FROM OLDHASSKILLS d1, SKILLS d2 
         WHERE d1.description = d2.description);

我在使用 'WHERE (SELECT' 时遇到问题,错误子查询只能 return 一列。

我的 SQL 语句是否有误,或者有更好的方法吗?

加入 FROM 子句,而不是完全不连接的子查询。

INSERT INTO hasskills
            (skillid,
             attribute1,
             attribute2,
             attribute3) 
            SELECT s.skillid,
                   ohs.attribute1,
                   ohs.attribute2,
                   ohs.attribute3
                   FROM oldhasskills ohs
                        INNER JOIN skills s
                                   ON ohs.description = s.description;