Переместить данные SQL из одной таблицы в другую - PullRequest
58 голосов
/ 23 октября 2009

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

Например, мне нужно переместить все строки таблицы из Таблицы1 в Таблицу2, где их имя пользователя = 'X' и пароль = 'X', чтобы они больше не появлялись в Таблице 1.

Я использую SQL Server 2008 Management Studio.

Ответы [ 12 ]

0 голосов
/ 28 ноября 2016

Вы можете использовать «Логическое разбиение» для переключения данных между таблицами:

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

вот образец:

CREATE TABLE TBL_Part1
(id  INT NOT NULL,
 val VARCHAR(10) NULL,
 PartitionColumn  VARCHAR(10) CONSTRAINT CK_Part1 CHECK(PartitionColumn = 'TBL_Part1'),
 CONSTRAINT TBL_Part1_PK PRIMARY KEY(PartitionColumn, id)
);

CREATE TABLE TBL_Part2
(id  INT NOT NULL,
 val VARCHAR(10) NULL,
 PartitionColumn  VARCHAR(10) CONSTRAINT CK_Part2 CHECK(PartitionColumn = 'TBL_Part2'),
 CONSTRAINT TBL_Part2_PK  PRIMARY KEY(PartitionColumn, id)
);

GO

CREATE VIEW TBL(id, val, PartitionColumn)
WITH SCHEMABINDING
AS
     SELECT id, val, PartitionColumn FROM dbo.TBL_Part1
     UNION ALL  
     SELECT id, val, PartitionColumn FROM dbo.TBL_Part2;

GO

--Insert sample to TBL ( will be inserted to Part1 )
INSERT INTO TBL
VALUES(1, 'rec1', 'TBL_Part1');

INSERT INTO TBL
VALUES(2, 'rec2', 'TBL_Part1');

GO

--Query sub table to verify
SELECT * FROM TBL_Part1

GO
--move the data to table TBL_Part2 by Logical Partition switching technique
UPDATE TBL
  SET
      PartitionColumn = 'TBL_Part2';

GO

--Query sub table to verify
SELECT * FROM TBL_Part2
0 голосов
/ 15 ноября 2015

Если в двух таблицах используется один и тот же идентификатор или общий ключ UNIQUE:

1) Вставить выбранную запись в таблицу 2

INSERT INTO table2 SELECT * FROM table1 WHERE (conditions)

2) удалить выбранную запись из таблицы1, если она присутствует в таблице2

DELETE FROM table1 as A, table2 as B WHERE (A.conditions) AND  (A.ID = B.ID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...