MySQL - 结合INSERT,VALUES和SELECT?

时间:2011-05-23 00:15:01

标签: php android mysql

我是SQL的新手,我真的只是与它进行交互以获得高分数据库的工作。我正在使用php脚本访问我的在线MySQL数据库。反正。

我所拥有的是2桌,球员和得分。播放器具有id,uniqueDeviceId和selectedname。 分数有你期望的常用事物。

我在单个查询中真正想做的事情(为了降低复杂性......)是结合

的语法
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(第三个“值”),并将该选择的结果与提供的VALUES的输入混合。

这可能吗?我找到的所有谷歌搜索结果要么全部都是VALUES,要么全部选择SELECT。

3 个答案:

答案 0 :(得分:47)

有道理,被称为INSERT SELECT。这是uniqueDeviceId 123,Score 5和Difficulty'easy'的示例查询:

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

答案 1 :(得分:4)

根据this page,你很接近。但是将所有值都放入您的选择中。类似的东西:

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

答案 2 :(得分:1)

这种方法怎么样:

INSERT INTO `tableA` SET 
           columnA =  (SELECT `columnY` FROM `tableY` WHERE `id` = 2), 
           columnB =  (SELECT `columnZ` FROM `tableB` WHERE `id` = 3);

我还没有对它进行基准测试。但是使用多个SELECT语句会给数据库服务器带来负担。这种方法的优点是可读性。