SQL 使用从外部值匹配的其他 table 中选择的值插入 table

SQL insert into table with values selected from other tables where an external value matches

我有以下 tables:

表 1:

id rarity
1 Common
2 Uncommon
3 Rare

表 2:

id Type
1 Air
2 Earth
3 Fire
4 Water

输出 table 已经存在,架构如下:

rarityID weakness_typeID resistance_typeID

我应该根据 Table2 和 Table1 用行填充它。

例如,如果我得到:

我想将 Table1Table2 中包含的 ID 添加到此 table 以获得以下更新输出 table:

rarityID weakness_typeID resistance_typeID
1 4 1

我编写了以下查询:

INSERT INTO table3 (rarityID, weakness_typeID, resistance_typeID)
    SELECT rar.id, weak.id, res.id
    FROM table1 rar, table2 weak, table2 res
    WHERE rar.rarity = `Common`
      AND weak.type = `Water`
      AND res.type = `Air`;

但是不行,你能帮帮我吗?

我对你的问题的理解是,你正在尝试获取每条信息的 ID。

如果这是正确的,为了做到这一点,您需要在三个单独的查询中 select 他们的 ID,就像在以下查询中所做的那样:

INSERT INTO table3 (rarityID, weakness_typeID, resistance_typeID)
SELECT (SELECT rar.id
        FROM   table1 rar
        WHERE  rar.rarity = 'Common') AS rarityID,
       (SELECT weak.id
        FROM   table2 weak
        WHERE  weak.type = 'Water') AS weakness_typeID,
       (SELECT weak.id
        FROM   table2 weak
        WHERE  weak.type = 'Air') AS resistance_typeID;

如果您想使用此代码,请选中此 SQL Fiddle