Подтвердить что ты не робот

MySQL - Объединение INSERT, VALUES и SELECT?

Я немного новый для 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.

4b9b3361

Ответ 1

Имеет смысл и называется INSERT SELECT. Это пример запроса для uniqueDeviceId 123, Score 5 и Difficulty "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

Ответ 3

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

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

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