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 用行填充它。
例如,如果我得到:
type
是 'Water' 和 'Air'
rarity
是 'Common'
我想将 Table1
和 Table2
中包含的 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。
我有以下 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 用行填充它。
例如,如果我得到:
type
是 'Water' 和 'Air'rarity
是 'Common'
我想将 Table1
和 Table2
中包含的 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。