如何插入带有value和score_id的分数?在服务器上,我只知道score_type.name和score.value。我怎样才能用score_type插入新分数?如果存在score_type名称,只需获取ID并插入,否则创建,获取ID并插入。
答案 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
表示如果您尝试插入重复的名称,则会自动失败。
用已知的123
和player_name
替换score.value
和score.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");
诀窍是仅使用另一个查询而不是固定值。