MySQL: вставка данных из разных столбцов разных таблиц

#mysql #phpmyadmin

#mysql #phpmyadmin

Вопрос:

Я хотел бы вставить данные, используя данный запрос MySQL.

 INSERT INTO `profitdb`(`BetID`, `PlayerID`, `PlayerWL`,`AgentID`,`AgentRisk`) 
SELECT `betdb`.`BetID`,`PlayerID`,`BetAmount` FROM `betdb`,
SELECT `agentdb`.`AgentID` FROM `agentdb`,
SELECT `agentdb`.`Risk` FROM `agentdb`
  

без 3-го и 4-го операторов SELECT все в порядке, но я хотел бы вставить данные идентификатора агента, которые будут поступать из таблицы agentdb, как правильно это сделать?

Комментарии:

1. можете ли вы объединить эти 2 таблицы? есть ли общее поле?

2. вы имеете в виду betdb и agentdb? Я не могу присоединиться к ним, потому что у них нет общего поля, кстати, я обновил свой пост

Ответ №1:

Вы можете union получить свои результаты, однако вы вводите не select столько столбцов AgentID , Risk сколько insert ожидает ваша команда. У вас должно быть столько столбцов, сколько insert вы ожидаете. Кроме того, их тип должен соответствовать ожидаемому типу.

Комментарии:

1. О, я вижу, я не разбираюсь в sql, поэтому я просто изложил свою идею и спросил, какой синтаксис, я попробовал, что говорит этот сайт, [ support.sas.com/documentation/cdl/en/sqlproc/62086/HTML/default / … и получите ошибку #1222 — Используемые операторы SELECT имеют разное количество столбцов

2. Точно. Вы должны убедиться, что ваш select совместим с insert .

3. Я исправил отношения таблиц и использовал левые соединения, чтобы сделать вставку действительной

4. Таким образом, ваша вставка допустима по синтаксису. Вы проверили, являются ли вставленные значения ожидаемыми? Если это так, то ваша проблема решена. Если мой ответ был полезен, вы можете принять его, поэтому в будущем он поможет и другим.

5. Да, они ожидаемые. Спасибо.

Ответ №2:

 INSERT INTO `profitdb`(`BetID`, `PlayerID`, `PlayerWL`,`AgentID`) 
VALUES (SELECT `betdb`.`BetID`,`PlayerID`,`BetAmount` FROM `betdb`,
(SELECT `agentdb`.`AgentID` FROM `agentdb`))
  

Попробуйте вышеуказанный, если он работает.

Комментарии:

1. sql сообщает # 1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «SELECT betdb . BetID , PlayerID , BetAmount FROM betdb , (SELECT agentdb .` в строке 2

2. ВСТАВИТЬ В profitdb ( BetID , PlayerID , PlayerWL , AgentID ) ЗНАЧЕНИЯ SELECT betdb . BetID , PlayerID , BetAmount FROM betdb , (SELECT agentdb . AgentID ИЗ agentdb ) Как насчет вышесказанного?

3. Еще одна идея — взять столбец в vars, а затем использовать его в инструкции insert .