MySQL – объединение INSERT, VALUES и SELECT?

Я немного новичок в SQL, и я действительно общаюсь с ним достаточно, чтобы получить базу данных с высокими баллами. Я использую php-скрипт для доступа к моей онлайн-базе данных MySQL. В любом случае.

У меня есть 2 стола, игрок и счет. У игрока есть id, uniqueDeviceId и chosenname. Оценка имеет обычные вещи, которые вы ожидаете.

То, что я действительно хотел бы сделать в одном запросе (чтобы уменьшить сложность …), состоит в объединении синтаксисов

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.

Это возможно? Все результаты поиска в googling найдены либо имеют все значения VALUES, либо все SELECT.

Solutions Collecting From Web of "MySQL – объединение INSERT, VALUES и SELECT?"

Делает смысл и называется INSERT SELECT . Это пример запроса для uniqueDeviceId 123, Score 5 и Difficulty «easy»:

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

Согласно этой странице, вы близки. Но поместите все значения в свой выбор. Что-то вроде:

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

Как насчет этого подхода:

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

Я еще не сравнивал это. Но использование нескольких SELECT будет обременять сервер базы данных. Плюсом этого подхода является читаемость.