我是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。
答案 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
语句会给数据库服务器带来负担。这种方法的优点是可读性。