Ответ 1
Имеет смысл и называется INSERT SELECT. Это пример запроса для uniqueDeviceId 123, Score 5 и Difficulty "easy":
INSERT INTO scores (score, difficulty, playerid)
SELECT 5, 'easy', id
FROM player WHERE uniqueDeviceId = 123;
Я немного новый для SQL, и я действительно общаюсь с ним достаточно, чтобы работать с базой данных с высокими баллами. Я использую php script для доступа к моей онлайн-базе данных 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-е "значение" ) и смешивать результат этого выбора с вводом предоставленных значений.
Возможно ли это? Все результаты поиска в googling найдены либо имеют все значения 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
будет обременять сервер базы данных. Положительная сторона этого подхода - читаемость.