Ms sql insert into from select: SQL INSERT INTO SELECT Statement

INSERT INTO SELECT FROM Инструкция для копирования данных из одной таблицы в другую ~ Asp.Net, C#.Net, VB.Net, MVC, jQuery, JavaScipt, AJAX, WCF, пример сервера Sql

SQL SERVER: оператор INSERT INTO SELECT FROM для копирования данных из одной таблицы в другую

Введение : В этой статье я расскажу, как копировать/выбирать данные
из всех или выбранных столбцов одной таблицы и вставить в другую существующую таблицу
в SQL.

В предыдущих статьях я объяснил, как Вставка нескольких записей в таблицу в одном операторе вставки и Обновление существующих значений столбцов линейными порядковыми номерами без цикла и Получение дня, месяца и года из текущей или любой даты и Подсчет количества вхождений символа или слова в строку в sql и Объявление и использование табличных переменных в sql server

Описание : The
Оператор INSERT INTO SELECT копирует/выбирает данные из одной таблицы (исходной таблицы)
и вставляет его в другую существующую таблицу (таблицу назначения). Существующие данные в
целевая таблица останется неизменной.

Новые строки будут
быть добавлен к последней из существующих записей.

 

Реализация : Давайте создадим образец таблицы и выполним желаемое
операция.

 —Создать таблицу(Источник)

СОЗДАТЬ ТАБЛИЦУ tbBooks

BookId        INT NOT NULL IDENTITY(1,1) PRIMARY KEY,

Имя книги   VARCHAR(100),

Автор         VARCHAR(100),

Издатель      VARCHAR(100),

BookPrice     DECIMAL(10,2)

—Добавить некоторые фиктивные данные
в таблицу

ВСТАВИТЬ В tbBooks ЗНАЧЕНИЯ

(«Asp.Net», «Аджай», «Рози
Публикация», 1200),

(«C#. Net», «Сахил», «Джай
Публикация’,1000),

(«VB.Net», «Нэнси», «Рози
Публикация»,970),

(«MVC», «Сахил», «Амар
Публикация», 1480),

(«ЯВА», «Суприт», «Сэм
Публикация», 850),

(«PHP», «Парвеш», «Майя
Публикация’,800)

 —Проверить вставленные данные

SELECT * FROM tbBooks 

Идентификатор книги

ИмяКниги

Автор

Издатель

Цена книги

Asp.Net

Публикация Рози

1200. 00

С#.Net

Джай Публикация

1000.00

ВБ.Нет

Публикация Рози

970.00

Публикация Амара

1480.00

Суприт

Публикация Сэма

850. 00

Парвеш

Публикация Майя

800.00

—Создать другую таблицу (назначение)

СОЗДАТЬ ТАБЛИЦУ tbSelectedBooks

BookId        INT NOT NULL IDENTITY(1,1) PRIMARY KEY,

Имя книги   VARCHAR(100),

Автор        VARCHAR(100),

Издатель     VARCHAR(100),

BookPrice    DECIMAL(10,2)

  

— Давайте скопируем данные, кроме
BookId из таблицы tbBooks и вставка в таблицу tbSelectedBooks

 Скопировать данные из одной таблицы и вставить в другую:

ВСТАВИТЬ В tbSelectedBooks(BookName, Author, Publisher, BookPrice) SELECT BookName, Author, Publisher, BookPrice
ИЗ
книги;

Примечание : мы можем скопировать данные из всех или любого количества столбцов из одной таблицы и вставить в другую таблицу

—Проверить вставленные данные

SELECT * FROM
tbSelectedBooks     

Идентификатор книги

ИмяКниги

Автор

Издатель

Цена книги

Asp. Net

Публикация Рози

1200.00

С#.Net

Джай Публикация

1000.00

ВБ.Нет

Публикация Рози

970.00

Публикация Амара

1480. 00

Суприт

Публикация Сэма

850.00

Парвеш

Публикация Майя

800.00

Копировать данные при условии:

Предполагать
мы хотим скопировать и вставить только те записи из таблицы tbBooks, где Book
цена больше 1000, тогда запрос будет таким:

—Давайте сначала обрежем
все существующие данные для ясности

TRUNCATE TABLE tbSelectedBooks

ВСТАВИТЬ В tbSelectedBooks(BookName,Author,Publisher,BookPrice) SELECT BookName,Author,Publisher,BookPrice FROM  tbBooks WHERE BookPrice>1000;

—Проверить вставленные данные

SELECT * FROM tbSelectedBooks     

Идентификатор книги

ИмяКниги

Автор

Издатель

Цена книги

Asp. Net

Публикация Рози

1200.00

Публикация Амара

1480.00

Теперь к вам:

Блог ничто без отзывов и комментариев читателей. Поэтому, пожалуйста, оставляйте свои ценные отзывы, чтобы я мог сделать этот блог лучше, и Если вам нравится моя работа; Вы можете оценить это, оставив свои комментарии, нажав кнопку «Нравится» в Facebook, подписавшись на Google+, Twitter, Linkedin и Pinterest, наткнувшись на мои публикации и подписавшись на получение бесплатных обновлений прямо в свой почтовый ящик. Оставайтесь с нами и оставайтесь на связи для получения дополнительных технических обновлений.

Вставка с использованием «не существует» на сервере SQL

0,00/5 (Нет голосов)

Узнать больше:

SQL-сервер

T-SQL

Привет всем,

Я столкнулся с проблемой при попытке вставить значения во временную таблицу, используя не существует.

Ниже приведена фиктивная таблица, которую я создал:

CREATE TABLE TEST_DEL(ID INT, NAME VARCHAR(10)) 

фиктивные вставки:

ВСТАВИТЬ В TEST_DEL VALUES(1, 'A')
ВСТАВИТЬ В TEST_DEL VALUES(2, 'B')
ВСТАВИТЬ В TEST_DEL VALUES(2, 'C')
ВСТАВИТЬ В TEST_DEL VALUES(3, 'D')
ВСТАВИТЬ В TEST_DEL VALUES(4, 'E') 

создание структуры временной таблицы для получения одной записи для каждого значения «ID» из таблицы Test_DEL:

SELECT * INTO #TEMP FROM TEST_DEL WHERE 1=0 

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

ВСТАВЬТЕ В #TEMP (ID, ИМЯ)
ВЫБЕРИТЕ a. ID, a.NAME ИЗ TEST_DEL A
ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ #TEMP B ГДЕ B.ID = A.ID 

здесь мое ожидание с этим запросом состоит в том, чтобы проверить каждую запись со значением идентификатора перед вставкой во временную таблицу, если она еще не существует, тогда вставьте , и если во временной таблице существует какая-либо запись со значением идентификатора, пропустите эту запись из вставки.0007

Я должен получить 4 записи в #temp, но я получаю все 5 записей.

кто-нибудь может подсказать, что не так в написанном мной запросе?

Заранее спасибо.

Что я пробовал:

Пробовал указанный выше оператор вставки с «не существует», но он не работает.

Добавить решение


1 раствор

Решение 1

Ах, хорошо, есть два экземпляра с ID=2.

Причина, по которой вы получаете все 5, заключается в том, что ID=2 не существует во временной таблице перед оператором вставки (и помните, что у вас есть только один оператор вставки, а не 4 или 5 отдельных).