Добавление результата запроса в таблицу
Каким образом можно добавить результат данного запроса в таблицу?
SELECT `class`, `discipline`, SUM(IF(`type`='Лабораторная', `count_students`, 0)) AS `count_students`, SUM(IF(`type`='Лекция', `count_hours`, 0)) AS `lection`, SUM(IF(`type`='Семинар', `count_hours`, 0)) AS `seminar`, SUM(IF(`type`='Лабораторная', `count_hours`, 0)) AS `lab`, SUM(`type`='Лекция') AS `groups`, SUM(`type`='Лабораторная') AS `subgroups`, count('id') AS `numbe`, `course_semestr`, `profile`, `id` FROM `list` GROUP BY `class`, `discipline
Создал таблицу с точно такими же названиями столбцов, и теперь нужно результат запроса сохранить в эту таблицу. Как это можно сделать через sql?
Отслеживать
задан 21 мая 2015 в 18:52
Шамиль Асланов Шамиль Асланов
126 1 1 серебряный знак 9 9 бронзовых знаков
Создание запросов на вставку результатов (визуальные инструменты для баз данных)
Запрос вставки результатов позволяет копировать строки внутри таблицы или из одной таблицы в другую. Например, с помощью запроса вставки результатов можно скопировать сведения о названиях книг некоторого издателя из таблицы titles в другую таблицу, которая будет ему доступна. Запрос вставки результатов похож на запрос создания таблицы, но копирует строки в уже существующую таблицу.
Строки можно скопировать из одной таблицы в другую методом вырезания и вставки. Создайте запрос для каждой таблицы и запустите их. Скопируйте нужные строки из одной сетки результатов в другую.
При создании запроса вставки результатов необходимо указать следующее.
- Таблицу базы данных, куда нужно скопировать строки (целевую таблицу).
- Таблицу или таблицы, из которых копируются строки (исходную таблицу). Исходная таблица или таблицы становятся частью вложенного запроса. При копировании данных внутри таблицы целевая таблица совпадает с исходной.
- Столбцы в исходной таблице, содержимое которых нужно скопировать.
- Столбцы в целевой таблице, в которые нужно скопировать данные.
- Условия поиска для выборки строк, которые нужно скопировать.
- Порядок сортировки, когда нужно скопировать строки в определенном порядке.
- Параметры группировки для случаев, когда нужно скопировать только сводные данные.
Например, следующий запрос копирует сведения о названиях книг из таблицы titles в архивную таблицу archivetitles . Запрос копирует содержимое четырех столбцов для всех названий, принадлежащих указанному издателю:
INSERT INTO archivetitles (title_id, title, type, pub_id) SELECT title_id, title, type, pub_id FROM titles WHERE (pub_id = '0766')
Чтобы вставить значения в новую строку, используйте запрос вставки значений.
Можно скопировать содержимое всех или только выбранных столбцов в строке таблицы. В любом случае, копируемые данные должны быть совместимы со столбцами целевой таблицы. Например, при копировании содержимого столбца price столбец, куда копируются данные, должен допускать числовые данные с десятичным разделителем. При копировании всей строки физическое положение совместимых столбцов целевой и исходной таблицы должно совпадать.
При создании запроса вставки результатов внешний вид панели критериев меняется, отражая параметры, доступные для копирования данных. Добавляется столбец «Добавить» позволяющий указать столбцы, в которые необходимо скопировать данные.
Результат выполнения запроса вставки результатов отменить нельзя. В целях предосторожности создайте резервную копию данных перед выполнением запроса.
Создание запроса вставки результатов
- Создайте новый запрос и добавьте таблицу, из которой нужно скопировать строки (исходную таблицу). При копировании строк внутри таблицы в качестве целевой таблицы нужно указать исходную.
- В меню Конструктор запросов выберите пункт Тип изменения, а затем пункт Вставить результаты.
- В диалоговом окне Выбор целевой таблицы для инструкции Insert Resultsвыберите таблицу, в которую нужно скопировать строки (целевую таблицу).
Примечание Конструктор запросов и представлений не может заранее определить, какие таблицы и представления можно обновить. Поэтому список Имя таблицы в диалоговом окне Выбор целевой таблицы для вставки результатов содержит все доступные таблицы и представления в запрашиваемом подключении к данным (даже те, в которые нельзя скопировать строки).
Примечание При добавления столбца для поиска на панели критериев конструктор запросов и представлений также включит его в список столбцов, подлежащих копированию. Если столбец нужно использовать только для поиска, но не для копирования, снимите флажок рядом с именем столбца в прямоугольнике, который представляет таблицу или возвращающий табличное значение объект.
При выполнении запроса «вставка результатов» панель Результатыне отображает никаких сообщений. Вместо этого появляется сообщение о количестве скопированных строк.
Как в MySQL результаты запроса сохранить в новую таблицу
В MySQL в одном SQL запросе можно создать новую таблицу и сохранить в неё результаты MySQL запроса (результаты по другой таблице. Либо можно сохранить результаты поиска по таблице в другую, уже существующую таблицу.
Как в MySQL сохранить результаты MySQL запроса в новую таблицу
Используйте следующую конструкцию:
CREATE TABLE new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
CREATE TABLE `db2`.`new_table` SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Обратите внимание, что часть, которая начинается с SELECT, представляет по синтаксису обычный запрос поиска SELECT. То есть вы можете протестировать ваш запрос без создания новой таблицы:
SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
И если он сработал правильно, то добавьте этот запрос после «CREATE TABLE new_table».
Как сохранить результаты MySQL запроса с несколькими столбцами в новую таблицу
Если вы хотите, чтобы в новую таблицу было сохранено несколько столбцов, то перечислите их после SELECT:
CREATE TABLE `db2`.`new_table` SELECT `column1` , `column2` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column1` DESC;
Если вы хотите, чтобы были сохранены все столбцы, то укажите «*»:
CREATE TABLE `db2`.`new_table` SELECT * FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `id` DESC;
Как сохранить результаты MySQL запроса в новую таблицу с PRIMARY KEY
После имени новой таблицы в скобках укажите имя и свойства столбца, который должен стать PRIMARY KEY, например:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)) SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Вам необязательно указывать имена каждого столбца, который составит новую таблицу. Полученные с помощью запроса SELECT данные будут присоединены к таблице справа.
Как указать свойства столбцов при сохранении результатов запроса в новую таблицу
После имени новой таблицы в скобках вы можете указать свойства столбцов, используя синтаксис CREATE TABLE:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), KEY(title)) SELECT `title`, `link` FROM `db1`.`old_table` WHERE `body` LIKE '%search string%' ORDER BY `id` DESC;
Обратите внимание, что если полученные с помощью SELECT имена столбцов не совпадают с именами указанными в CREATE TABLE, то такие столбцы будут присоединены справа.
Как поменять имена столбцов в результатах MySQL запроса, сохраняемых в новую таблицу
С помощью ключевого слова AS вы можете поменять имя одного или нескольких столбцов.
Пример изменения имени одного столбца:
CREATE TABLE `db2`.`test` SELECT `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Пример изменения имени двух столбцов для вставки в создаваемую таблицу:
CREATE TABLE `db2`.`test` SELECT `id` AS `name`, `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Как в MySQL сохранить результаты MySQL запроса в существующую таблицу
Чтобы сохранить результаты запроса в существующую таблицу, используйте конструкцию:
INSERT INTO new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
Обратите внимание, что если вы не указываете имя столбцов, в который должны быть вставлены данные, то имена выбранных для сохранения столбцов должны совпадать в обеих таблицах.
Пример указания имени столбца в новой таблице для вставки данных:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Либо для изменения имени полей используйте «AS», как это показано выше.
Полезные ссылки:
- https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html
- https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
MySQL: как сохранить вывод запроса в файл.
MySQL — это бесплатная и популярная система управления базами данных, которая используется многими разработчиками и аналитиками данных для веб-сайтов или серверов. Одной из функций MySQL является возможность вывода данных в файл.
В этой статье мы рассмотрим, как сохранить вывод запроса MySQL в файл.
Как сохранить вывод запроса MySQL в файл
Чтобы сохранить вывод запроса MySQL в файл, нужно использовать команду SELECT. INTO OUTFILE. Эта команда выполняет запрос и записывает результаты в файл на сервере.
Вот синтаксис команды SELECT. INTO OUTFILE:
SELECT column1, column2, . FROM table_name INTO OUTFILE 'file_path'
Здесь column1, column2, . — это столбцы, которые вы хотите выбрать из таблицы; table_name — это имя таблицы; file_path — это путь к файлу, в который будут записаны результаты.
SELECT first_name, last_name, email FROM customers INTO OUTFILE '/var/lib/mysql-files/customers.csv'
Этот запрос выбирает имена, фамилии и адреса электронной почты клиентов из таблицы customers и записывает результаты в файл /var/lib/mysql-files/customers.csv.
Обратите внимание, что путь к файлу должен указывать на директорию, к которой у MySQL есть доступ для записи.
Как использовать сохраненный файл
После того, как вы сохраните вывод запроса MySQL в файл, вы можете использовать его в различных целях. Например, вы можете импортировать данные из файла в другую таблицу, отправить файл по электронной почте или открыть его в Excel.
Чтобы импортировать данные из файла в другую таблицу MySQL, используйте команду LOAD DATA INFILE. Вот синтаксис:
LOAD DATA INFILE 'file_path' INTO TABLE table_name
Здесь file_path — это путь к файлу, из которого вы хотите импортировать данные; table_name — это имя таблицы, в которую вы хотите импортировать данные.
LOAD DATA INFILE '/var/lib/mysql-files/customers.csv' INTO TABLE new_customers
Эта команда импортирует данные из файла /var/lib/mysql-files/customers.csv в таблицу new_customers.
Обратите внимание, что для использования команды LOAD DATA INFILE, файл должен находиться на сервере MySQL.