ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Вставка данных из одной таблицы в другую в MS Access

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для переноса записей из одной таблицы в другую, при соблюдении условия идентичности столбцов, используйте команду INSERT INTO SELECT. Это практичный инструмент SQL.

SQL
Скопировать код
-- Avada Kedavra! Заклинание для переноса данных.
INSERT INTO DeathEater_records (FirstName, LastName)
SELECT FirstName, LastName
FROM Hogwarts_students
WHERE BloodStatus = 'Pure-Blood';

В качестве целевого объекта выбирается DeathEater_records, источником данных служит Hogwarts_students, определяются названия столбцов и используется условие WHERE для выделения необходимых данных.

Следует обеспечить совпадение имен столбцов и типов данных, как LongIntColumn1 и CurrencyColumn2, во избежание ошибок. Тестирование запросов на случайных данных способно подтвердить их корректность.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Развернутое руководство по INSERT INTO SELECT

Агрегация данных

Если требуется сагрегировать данные при переносе, можно использовать группировку и функции:

SQL
Скопировать код
-- Доверяем Гринготтсу.
INSERT INTO MoneyManagement (AverageGalleons)
SELECT AVG(Galleons)
FROM GringottsVaults
GROUP BY VaultNumber;

Здесь AVG() и GROUP BY помогают рассчитывать среднее значение галлеонов для каждого хранилища перед добавлением данных в таблицу MoneyManagement.

Трансформация данных в процессе переноса

Данные могут быть трансформированы в ходе выполнения операции SELECT, используя псевдонимы и функции в выражении SELECT:

SQL
Скопировать код
-- Привет от профессора Макгонагалл.
INSERT INTO Minerva_FanClub (MemberName, EnrolmentDate)
SELECT StudentName, TO_CHAR(JoiningDate, 'YYYY-MM-DD')
FROM Hogwarts_database;

Функция TO_CHAR() адекватно преобразует дату для таблицы Minerva_FanClub.

Визуализация

Этот процесс похож на волшебное превращение спички (🪵) в иголку (🪡):

Классная комната (🏫): [Деревянная спичка 🪵]
Заклинание (🪄): Превращает 🪵 в 🪡
Блокнот мадам Пинс (📒): Срочно необходима иголка 🪡 для реставрации книг 📚

Произносим заклинание INSERT INTO:

SQL
Скопировать код
INSERT INTO MadamPince_notebook (FixingTools) 
  SELECT Tools FROM Classroom;

И вот что получается:

Markdown
Скопировать код
До произнесения заклинания: 🏫🪵  🪄  📒
После произнесения заклинания:  🏫    🪄  📒🪡 (Теперь можно производить реставрацию книг! 📚)

Распространенные ошибки и способы их устранения

Несовпадение типов данных

Необходимо следить за совпадением типов данных в исходной и приемной таблицах. В противном случае результат может быть неожиданным.

Учитывание ограничений

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

Обработка проблем с NULL

Проверьте обработку NULL-значений в исходных данных и готовность приемной таблицы принимать такие значения. При необходимости используйте функцию COALESCE для замещения NULL:

SQL
Скопировать код
-- NULL? Благодарю, но нет!
INSERT INTO OrderOfPhoenix (wizard, patronus)
SELECT wizard, COALESCE(patronus, 'Stag')
FROM Dumbledore_Army;

Полезные материалы

  1. SQL INSERT INTO SELECT Statement – Обстоятельное руководство по SQL INSERT INTO SELECT.
  2. Insert into ... values ( SELECT ... FROM ... ) – Stack Overflow – Обсуждение различных вариантов применения INSERT с SELECT.
  3. Different Options for Importing Data into SQL Server – Комплексный обзор различных способов импорта данных в SQL Server, включая INSERT INTO.