Сложный запрос на добавление строки - MySQL
Формулировка задачи:
Доброго времени суток)
Есть таблица, которая содержит в себе имена других таблиц и их русскоязычное описание. Так же есть таблица со странами, регионами с которых нужно брать идентификатор по названию.
1) можно ли создать запрос на добавление что то вроде такого 2) устанавливать значения полей при помощи вложенных запровов 3) корректна ли такая запись вообще
4) как правильно реализовать такую возможность.
INSERT INTO IN (SELECT name FROM serviceData WHERE discription = 'описание') VALUES ('значение','значение','значение','значение');
INSERT INTO IN (SELECT name FROM serviceData WHERE discription = 'описание') VALUES ('значение','значение',IN (SELECT id FROM country WHERE name = 'значение'),'значение');
Решение задачи: «Сложный запрос на добавление строки»
textual
Листинг программы
mysql> select * from test; +--------+ | field | +--------+ | field1 | | field2 | | field3 | +--------+ 3 rows in set (0.00 sec) mysql> select group_concat( `field` ) from test; +-------------------------+ | group_concat( `field` ) | +-------------------------+ | field1,field2,field3 | +-------------------------+ select concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) from test; +------------------------------------------------------------------+ | concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) | +------------------------------------------------------------------+ | insert into `Table`(field1,field2,field3) | +------------------------------------------------------------------+
Объяснение кода листинга программы
mysql>
— командная строка для взаимодействия с базой данныхselect * from test;
— запрос на выборку всех данных из таблицыtest
+--------+
— формат вывода результатов запроса (каждая строка выводится на новой строке, первый столбец выводится по центру, столбцы разделены символом+
и т.д.)field
— название поля таблицыtest
group_concat(
field)
— функция агрегирования, объединяющая значения поля в одну строку, разделенные запятымиselect concat( 'insert into
Table(' , group_concat(
field) , ')' ) from test;
— запрос на выборку строки, объединяющей названия полей и их значения в одну строку для вставки в таблицуTable
+------------------------------------------------------------------+
— формат вывода результатов запроса (каждая строка выводится на новой строке, первый столбец выводится по центру, столбцы разделены символом+
и т.д.)insert into
Table(field1,field2,field3) — SQL-команда на вставку строки в таблицу
Table` с указанием названий полей и их значений в скобках
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д