2016-10-03 2 views
-1

У меня есть таблица Persons (ID, Name, Address) и другая таблица Persons_twin (ID, Name, Address), в которой я хочу скопировать целые строки из Persons.Сохраненная процедура для копирования всех данных из одной таблицы в другую таблицу с использованием SQL

Какой самый короткий и лучший способ скопировать данные? Ниже приведен код, который я пробовал, но выполнение не выполняется. Ваши предложения наиболее ценны. Спасибо.

BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    INSERT INTO [dbo].[Persons_twin](ID, Name, Address) 
    VALUES(SELECT ID, Name, Address FROM [dbo].[Persons]) 
END 
+2

Возможный дубликат [копии SQL Server, все строки из одной таблицы в другую, т.е. дубликат таблицы] (http://stackoverflow.com/questions/2691441/sql-server-copy-all-rows-from-one-table-into-another-ie-duplicate-table) –

+0

VALUES предназначен для вставки отдельной строки определенных значений. Таким образом, вы не комбинируете его с SELECT. Вы используете тот или иной, но не тот и другой. –

ответ

0

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

INSERT INTO Persons_twin 
SELECT * FROM Persons 
+3

Не предлагайте ответ без выбора списка столбцов или вставьте список столбцов. Это может привести к проблемам в будущем при изменении любой из таблиц –

2

Удалите условие values и использовать select запрос непосредственно

INSERT INTO [dbo].[Persons_twin](ID, Name, Address) 
SELECT ID, Name, Address FROM [dbo].[Persons] 
0

Можно даже создать в второй стол на лету. В этом случае вам не придется беспокоиться о структуре таблицы:

SELECT * INTO persons_twin FROM Persons 
+0

Является ли ваш второй синтаксис действительным в 'SQL SERVER'? –

+0

Привет @Prdp, хороший улов! Нет. Найти сведения здесь] (https://msdn.microsoft.com/en-us/library/mt204041.aspx). Изменит мой ответ ... – Shnugo

Смежные вопросы