在表格中插入类型ID

时间:2019-11-18 19:52:36

标签: mysql sql

如何插入带有value和score_id的分数?在服务器上,我只知道score_type.name和score.value。我怎样才能用score_type插入新分数?如果存在score_type名称,只需获取ID并插入,否则创建,获取ID并插入。

tables

2 个答案:

答案 0 :(得分:2)

如果score_type不存在,请首先尝试创建它:

INSERT IGNORE INTO score_type (name) VALUES ("type_name");

然后使用INSERT ... SELECT将ID插入score表中:

INSERT INTO score (value, score_type_id, player_id)
SELECT 123, id, "player_name"
FROM score_type
WHERE name = "type_name";

第一个INSERT假设您在score_type.name上具有唯一索引。 IGNORE表示如果您尝试插入重复的名称,则会自动失败。

用已知的123player_name替换score.valuescore.player_id

答案 1 :(得分:0)

如果我正确理解了您的问题,则希望通过使用以下名称选择score_type_id来动态填充它:

INSERT INTO `score`(`value`, `score_type_id`, `player_id`) VALUES (1337, (SELECT id FROM score_type WHERE score_type.name = "test") ,"maio290");

诀窍是仅使用另一个查询而不是固定值。