Перейти к содержимому

Как сохранить запрос в таблицу sql

  • автор:

Добавление результата запроса в таблицу

Каким образом можно добавить результат данного запроса в таблицу?

 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 столбец, куда копируются данные, должен допускать числовые данные с десятичным разделителем. При копировании всей строки физическое положение совместимых столбцов целевой и исходной таблицы должно совпадать.

При создании запроса вставки результатов внешний вид панели критериев меняется, отражая параметры, доступные для копирования данных. Добавляется столбец «Добавить» позволяющий указать столбцы, в которые необходимо скопировать данные.

Результат выполнения запроса вставки результатов отменить нельзя. В целях предосторожности создайте резервную копию данных перед выполнением запроса.

Создание запроса вставки результатов

  1. Создайте новый запрос и добавьте таблицу, из которой нужно скопировать строки (исходную таблицу). При копировании строк внутри таблицы в качестве целевой таблицы нужно указать исходную.
  2. В меню Конструктор запросов выберите пункт Тип изменения, а затем пункт Вставить результаты.
  3. В диалоговом окне Выбор целевой таблицы для инструкции 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *