MySQL - 组合 INSERT、VALUES 和 SELECT?

2022-08-30 16:33:13

我对SQL有点陌生,我真的只与它进行交互,以使高分数据库正常工作。我正在使用php脚本来访问我的在线MySQL数据库。无论如何。

我有2张桌子,球员和得分。玩家有一个ID,唯一设备Id和选择的名称。分数具有您期望的通常内容。

我真正想在单个查询中做的(为了降低复杂性......)是将语法组合在一起

INSERT INTO scores VALUES
and INSERT INTO scores SELECT...

变成某种怪物,比如

INSERT INTO scores(score,difficulty,playerid)
   VALUES(TheScoreThatImProviding,TheDifficultyThatImProviding, (SELECT 
       id FROM player WHERE uniqueDeviceId = TheUniqueIdThatImProviding)
     )

如果这有意义的话。我想查找 playerId(第 3 个“值”),并将该选择的结果与提供的 VALUES 的输入混合在一起。

这可能吗?我找到的所有谷歌搜索结果要么具有所有值,要么具有所有SELECT。


答案 1

有意义,称为 INSERT SELECT。这是一个针对 uniqueDeviceId 123、Score 5 和难度“easy”的示例查询:

INSERT INTO scores (score, difficulty, playerid)
  SELECT 5, 'easy', id
  FROM player WHERE uniqueDeviceId = 123;

答案 2

根据这个页面,你很接近。但是将所有值放入您的选择中。像这样:

insert into scores (score, difficulty, playerid )
    select TheScoreThatImProviding, TheDifficultyThatImProviding, player.id 
      from player where uniqueDeviceId = TheUniqueIdThatImProviding

推荐