INSERT с динамической подстановкой в VALUE - MySQL

Узнай цену своей работы

Формулировка задачи:

У меня есть таблица `company`, у которой есть поля `id`, `company_name`, `parent_id`. И у меня есть переменная(name), в которой хранится `company_name` . Таким образом, у меня получается 2 запроса: 1. select `id` from `company` where `company_name` = name; После того как я узнаю необходимый `id`, я записываю это значение в переменную(parentID) и делаю другой запрос 2. INSERT INTO `company` (`company_name`, `parent_id`) VALUES ( name, parentID); Таким образом у меня получается 2 запроса, что не есть хорошо. Вопрос: можна их каким-то образом обьеденить в один, чтобы находить нужный `id` зная имя уже при самой вставке? спасибо.

Решение задачи: «INSERT с динамической подстановкой в VALUE»

textual
Листинг программы
INSERT INTO `company` (`company_name`, `parent_id`) VALUES (name, (SELECT * FROM (SELECT `id` FROM `company` WHERE `company_name` = name) AS tmp));

Объяснение кода листинга программы

В данном коде выполняется следующая последовательность действий:

  1. INSERT INTO – команда добавления новой записи в таблицу.
  2. company – название таблицы, в которую добавляется запись.
  3. (company_name,parent_id) – название и значение столбцов, в которые добавляется запись.
  4. (name) – подставляемое значение в название и значение столбца.
  5. VALUES – указывает, что следующая строка содержит значения для вставки.
  6. (SELECT * FROM (SELECTidFROMcompanyWHEREcompany_name= name) AS tmp) – подзапрос, результат которого будет использоваться при вставке записи.
  7. AS tmp – псевдоним для временной таблицы, созданной в подзапросе. Таким образом, в данном коде выполняется вставка записи в таблицу company с использованием подзапроса, который возвращает значение столбца id для компании с названием name. Значения name и (SELECT * FROM (SELECTidFROMcompanyWHEREcompany_name= name) AS tmp) являются динамическими и подставляются в запрос при его выполнении.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5